|
|
|
Статическая линковка с libpq.a (MinGW)
|
|||
|---|---|---|---|
|
#18+
Добрый день. Есть ли на форуме люди, которым удалось осуществить статическую линковку своих программ с libpq.a в MinGW? Если да - поделитесь опытом, как вам это удалось. Бюсь вторую неделю - все бестолку. В dependencies все время фигурирует libpq.dll (без нее есесно ничего не запускается). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2007, 21:49 |
|
||
|
Статическая линковка с libpq.a (MinGW)
|
|||
|---|---|---|---|
|
#18+
Не возможно сделать статическую линковку с библиотекой, можно только сделать линковку со статической библиотекой. Когда поймешь предыдущую фразу - сможешь сам ответить на свой вопрос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2007, 22:14 |
|
||
|
Статическая линковка с libpq.a (MinGW)
|
|||
|---|---|---|---|
|
#18+
молодец, знаешь русский язык (филфак заканчивал?). когда станешь программистом - поймешь и мой вопрос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2007, 22:32 |
|
||
|
Статическая линковка с libpq.a (MinGW)
|
|||
|---|---|---|---|
|
#18+
http://en.wikipedia.org/wiki/Static_library - просьба прочитать последнюю строку в конце первого абзаца и товарищам Ожеговым сюда больше не писать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2007, 22:38 |
|
||
|
Статическая линковка с libpq.a (MinGW)
|
|||
|---|---|---|---|
|
#18+
Под MinGW работал, линковать ничего с libpq.a не требовалось. Robert Ayrapetyan wrote: > молодец, знаешь русский язык (филфак заканчивал?). когда станешь > программистом - поймешь и мой вопрос. Прежде чем обижаться и кидаться гордыми высказываниями, почитали бы историю сообщений у чувака хотя бы, а то очень нелепо выглядит. Тем более, человек вам совершенно правильно глюк указал. Вы хотите скомпоновать проект с libpq.a, у вас требуют libpq.dll. На мысли не наводит? Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2007, 23:09 |
|
||
|
Статическая линковка с libpq.a (MinGW)
|
|||
|---|---|---|---|
|
#18+
Robert Ayrapetyan wrote: > Бюсь вторую неделю - все бестолку. Сообщение об ошибке в студию. И командную строку или мейкфайл для компиляции. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2007, 23:15 |
|
||
|
Статическая линковка с libpq.a (MinGW)
|
|||
|---|---|---|---|
|
#18+
Командная строка: Код: plaintext Без ошибок. Но в dependencies все время фигурирует libpq.dll. Ни на какие мысли это не наводит, т.к.: 1. lpq - это libpq.a (статическая либа - аналог libpq.lib для VS). 2. libpq.dll специально везде поубирал из всех папок. Но без libpq.dll программа не запускатеся. Более глубинно - libpq нужна QtSql модулю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2007, 23:55 |
|
||
|
Статическая линковка с libpq.a (MinGW)
|
|||
|---|---|---|---|
|
#18+
По поводу чувака с крутой историей сообщений: http://en.wikipedia.org/wiki/Static_library, читаем конец первого абзаца сверху: авторHowever it is debatable whether such a process can be called static linking. согласен, что debatable, но у меня вопрос в другом. Очевидно, человек хотел сказать, что libpq.a - это не статическая либа, и, соответсвенно, в документации все врут, и то что все либы, заканчивающиеся на "a" - статические это миф и т.п. Это было бы по существу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2007, 00:06 |
|
||
|
Статическая линковка с libpq.a (MinGW)
|
|||
|---|---|---|---|
|
#18+
Robert Ayrapetyan wrote: > Но без libpq.dll программа не запускатеся. Вообще, согласно докам, у g++ есть ключик -static, который запрещает линк с shared библиотеками, ежели таковые присутствуют. Как понимаю, проект у вас генериться через qmake, значит, это может быть неудобно делать. Далее. Как я понимаю - QtSql у вас уже скомпилен, причем он *.dll и кроме него libpq.dll ничего не использует. Соответственно, никакие выкрутасы избавиться от зависимости не помогут - она уже вшита в QtSql.dll. Можете попробовать пересобрать весь qt статически (в опциях configure.exe задается), либо вручную подправить модуль QtSql. Со статическим линком могут возникнуть некоторые неудобства. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2007, 00:39 |
|
||
|
Статическая линковка с libpq.a (MinGW)
|
|||
|---|---|---|---|
|
#18+
Robert Ayrapetyan wrote: > и то что все либы, заканчивающиеся на "a" - статические это миф и т.п Непонятно, вы здесь какой точки зрения придерживаетесь? *.a может быть нужен для подключения к программе *.dll. Т.е. это будет dynamic Linking, хотя *.a будет статически прилинкована. Причем (как я помню) *.dll на этапе компиляции не нужен - можете его хоть со всей системы снести, (это вам не дельфя), скомпилится, но не запустится. Посмотрите libglut32.a, например, внутри будет ссылка на glut32.dll. Также в *.a может содержаться заархивированный код (*.obj или *.o файлы), в этом случае они будут скомпонованы со всем остальным в один экзешник. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2007, 00:48 |
|
||
|
Статическая линковка с libpq.a (MinGW)
|
|||
|---|---|---|---|
|
#18+
авторДалее. Как я понимаю - QtSql у вас уже скомпилен, причем он *.dll и кроме него libpq.dll ничего не использует. Qt собрана статически, QtSql прилинковывается статически. Насчет моей libpq.a - она действительно содержит только переходники на dll. В таком случае вопрос: как используя средства MingW (MSYS) сбилдить реальную статическую libpq.a? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2007, 01:01 |
|
||
|
Статическая линковка с libpq.a (MinGW)
|
|||
|---|---|---|---|
|
#18+
Robert AyrapetyanНасчет моей libpq.a - она действительно содержит только переходники на dll.Умничка, правильным путем идешь.... Robert AyrapetyanВ таком случае вопрос: как используя средства MingW (MSYS) сбилдить реальную статическую libpq.a?.... и опять сворачиваешь на кривую дорожку. Если у тебя нету исходных текстов самой libpq.dll ты никак не сможешь сделать из нее статическую библиотеку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2007, 01:25 |
|
||
|
Статическая линковка с libpq.a (MinGW)
|
|||
|---|---|---|---|
|
#18+
Robert Ayrapetyan wrote: > сбилдить реальную статическую libpq.a? Никак. Нет, на самом деле, варианты, конечно, есть, но это несколько месяцев пустой траты времени. (дизассемблер в зубы и вперед, к светлому будущему :)) Чем вам так эта *.dll не угодила, что её в папку с проектом кинуть нельзя? Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2007, 02:08 |
|
||
|
Статическая линковка с libpq.a (MinGW)
|
|||
|---|---|---|---|
|
#18+
Исходные тексты естественно есть. Проблема оказалась в параметре enable_shared = no, который не был указан при компилляции libpq.a. Документированный --disable-shared в configure не спасал. Проблема решена, всем спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2007, 09:52 |
|
||
|
Статическая линковка с libpq.a (MinGW)
|
|||
|---|---|---|---|
|
#18+
Кстати, баг (или фиче) сборки libpq.a так и осталась, может кому пригодиться на будущее (из-за чего и возникла проблема изначально). Заключается оно в следующем: если сначала собрать libpq в виде shared library, то потом никак не получится скомпилить статическую версию без удаления псевдо-статической. Вот нерабочий вариант: 1. make install (динамическая libpq.dll и псевдо-статическая libpq.a библиотеки созданы). 2. make install enable_shared=no (получить реальную статическую libpq.a - облом). Реальная статическая libpq.a не создана. Вместо нее мы видим старую, псевдо-статическую libpq.a. Еще один нерабочий варинат: 1. make install enable_shared=no (создана статическую libpq.a - таки да, создана). 2. make install (динамическая libpq.dll и псевдо-статическая libpq.a библиотеки созданы). Реальная статическая библиотека полученная на первом шаге затерта псевдо-статической... Вот правильный, рабочий вариант: В каталоге "\src\interfaces\libpq\": 1. make install (динамическая libpq.dll и псевдо-статическая libpq.a библиотеки собраны). 2. Удалить псевдо-статическую libpq.a. 3. make install enable_shared=no (получить реальную статическую libpq.a). Странно, почему псевдо-статическая libpq.a может затирать статическую libpq.a, а наоборот этого не происходит. Кажется, половина всех проблем по libpq на всех форумах заключается именно в этом глюке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2007, 12:03 |
|
||
|
Статическая линковка с libpq.a (MinGW)
|
|||
|---|---|---|---|
|
#18+
Robert AyrapetyanЗаключается оно в следующем: если сначала собрать libpq в виде shared library, то потом никак не получится скомпилить статическую версию без удаления псевдо-статической. Во первых, не "псевдо-статическая" а "интерфейсная". Robert AyrapetyanВот нерабочий вариант: 1. make install (динамическая libpq.dll и псевдо-статическая libpq.a библиотеки созданы). 2. make install enable_shared=no (получить реальную статическую libpq.a - облом). Реальная статическая libpq.a не создана. Вместо нее мы видим старую, псевдо-статическую libpq.a.Во вторых, есть такая команда make clean которую надо было выполнить между двумя попытками компиляции. Robert AyrapetyanСтранно, почему псевдо-статическая libpq.a может затирать статическую libpq.a, а наоборот этого не происходит. Кажется, половина всех проблем по libpq на всех форумах заключается именно в этом глюке.Нету глюков. Есть не умение читать документацию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2007, 18:04 |
|
||
|
Статическая линковка с libpq.a (MinGW)
|
|||
|---|---|---|---|
|
#18+
про make clean я знал. Просто еще раз: скомпилить libpq.a статическую, а потом динамическую - можно вообще без make clean. Наоборот - нет. Было бы понятно, если б без "make clean" вообще ничего собрать нельзя, а так - глюк. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2007, 21:40 |
|
||
|
|

start [/forum/topic.php?fid=16&fpage=157&tid=1345830]: |
0ms |
get settings: |
7ms |
get forum list: |
17ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
53ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
61ms |
get tp. blocked users: |
2ms |
| others: | 205ms |
| total: | 369ms |

| 0 / 0 |
