powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Статическая линковка с libpq.a (MinGW)
18 сообщений из 18, страница 1 из 1
Статическая линковка с libpq.a (MinGW)
    #34809624
Robert Ayrapetyan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день. Есть ли на форуме люди, которым удалось осуществить статическую линковку своих программ с libpq.a в MinGW? Если да - поделитесь опытом, как вам это удалось. Бюсь вторую неделю - все бестолку. В dependencies все время фигурирует libpq.dll (без нее есесно ничего не запускается).
...
Рейтинг: 0 / 0
Статическая линковка с libpq.a (MinGW)
    #34809665
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не возможно сделать статическую линковку с библиотекой, можно только сделать линковку со статической библиотекой.
Когда поймешь предыдущую фразу - сможешь сам ответить на свой вопрос.
...
Рейтинг: 0 / 0
Статическая линковка с libpq.a (MinGW)
    #34809677
Robert Ayrapetyan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
молодец, знаешь русский язык (филфак заканчивал?). когда станешь программистом - поймешь и мой вопрос.
...
Рейтинг: 0 / 0
Статическая линковка с libpq.a (MinGW)
    #34809681
Robert Ayrapetyan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
http://en.wikipedia.org/wiki/Static_library - просьба прочитать последнюю строку в конце первого абзаца и товарищам Ожеговым сюда больше не писать
...
Рейтинг: 0 / 0
Статическая линковка с libpq.a (MinGW)
    #34809702
ErV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Под MinGW работал, линковать ничего с libpq.a не требовалось.

Robert Ayrapetyan wrote:

> молодец, знаешь русский язык (филфак заканчивал?). когда станешь
> программистом - поймешь и мой вопрос.
Прежде чем обижаться и кидаться гордыми высказываниями, почитали бы
историю сообщений у чувака хотя бы, а то очень нелепо выглядит.

Тем более, человек вам совершенно правильно глюк указал. Вы хотите
скомпоновать проект с libpq.a, у вас требуют libpq.dll. На мысли не
наводит?

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Статическая линковка с libpq.a (MinGW)
    #34809707
ErV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Robert Ayrapetyan wrote:

> Бюсь вторую неделю - все бестолку.
Сообщение об ошибке в студию. И командную строку или мейкфайл для
компиляции.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Статическая линковка с libpq.a (MinGW)
    #34809739
Robert Ayrapetyan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Командная строка:

Код: plaintext
g++ -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc -Wl,-s -Wl,-subsystem,windows -o "release\sigs_tk.exe" object_script.sigs_tk.Release  -L"c:\Qt\4.3.1\lib" -lmingw32 -lqtmain -lQtSql -lversion -lQtGui -lQtCore -lgdi32 -lcomdlg32 -loleaut32 -limm32 -lwinmm -lwinspool -lmsimg32 -lQtCore4 -lkernel32 -luser32 -lshell32 -luuid -lole32 -ladvapi32 -lws2_32 -LC:\Progra~ 1 \PostgreSQL\ 8 . 2 \lib\ -lpq

Без ошибок. Но в dependencies все время фигурирует libpq.dll. Ни на какие мысли это не наводит, т.к.:
1. lpq - это libpq.a (статическая либа - аналог libpq.lib для VS).
2. libpq.dll специально везде поубирал из всех папок.

Но без libpq.dll программа не запускатеся.

Более глубинно - libpq нужна QtSql модулю.
...
Рейтинг: 0 / 0
Статическая линковка с libpq.a (MinGW)
    #34809747
Robert Ayrapetyan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
По поводу чувака с крутой историей сообщений:

http://en.wikipedia.org/wiki/Static_library, читаем конец первого абзаца сверху:
авторHowever it is debatable whether such a process can be called static linking.

согласен, что debatable, но у меня вопрос в другом.

Очевидно, человек хотел сказать, что libpq.a - это не статическая либа, и, соответсвенно, в документации все врут, и то что все либы, заканчивающиеся на "a" - статические это миф и т.п. Это было бы по существу.
...
Рейтинг: 0 / 0
Статическая линковка с libpq.a (MinGW)
    #34809772
ErV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
...
Рейтинг: 0 / 0
Статическая линковка с libpq.a (MinGW)
    #34809779
ErV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Robert Ayrapetyan wrote:

> и то что все либы, заканчивающиеся на "a" - статические это миф и т.п
Непонятно, вы здесь какой точки зрения придерживаетесь?

*.a может быть нужен для подключения к программе *.dll. Т.е. это будет
dynamic Linking, хотя *.a будет статически прилинкована. Причем (как я
помню) *.dll на этапе компиляции не нужен - можете его хоть со всей
системы снести, (это вам не дельфя), скомпилится, но не запустится.
Посмотрите libglut32.a, например, внутри будет ссылка на glut32.dll.

Также в *.a может содержаться заархивированный код (*.obj или *.o
файлы), в этом случае они будут скомпонованы со всем остальным в один
экзешник.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Статическая линковка с libpq.a (MinGW)
    #34809784
Robert Ayrapetyan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторДалее. Как я понимаю - QtSql у вас уже скомпилен, причем он *.dll и
кроме него libpq.dll ничего не использует.

Qt собрана статически, QtSql прилинковывается статически.

Насчет моей libpq.a - она действительно содержит только переходники на dll. В таком случае вопрос: как используя средства MingW (MSYS) сбилдить реальную статическую libpq.a?
...
Рейтинг: 0 / 0
Статическая линковка с libpq.a (MinGW)
    #34809795
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Robert AyrapetyanНасчет моей libpq.a - она действительно содержит только переходники на dll.Умничка, правильным путем идешь....
Robert AyrapetyanВ таком случае вопрос: как используя средства MingW (MSYS) сбилдить реальную статическую libpq.a?.... и опять сворачиваешь на кривую дорожку.
Если у тебя нету исходных текстов самой libpq.dll ты никак не сможешь сделать из нее статическую библиотеку.
...
Рейтинг: 0 / 0
Статическая линковка с libpq.a (MinGW)
    #34809810
ErV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Robert Ayrapetyan wrote:

> сбилдить реальную статическую libpq.a?
Никак.

Нет, на самом деле, варианты, конечно, есть, но это несколько месяцев
пустой траты времени. (дизассемблер в зубы и вперед, к светлому
будущему :))

Чем вам так эта *.dll не угодила, что её в папку с проектом кинуть
нельзя?


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Статическая линковка с libpq.a (MinGW)
    #34810109
Robert Ayrapetyan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Исходные тексты естественно есть. Проблема оказалась в параметре enable_shared = no, который не был указан при компилляции libpq.a. Документированный --disable-shared в configure не спасал.
Проблема решена, всем спасибо.
...
Рейтинг: 0 / 0
Статическая линковка с libpq.a (MinGW)
    #34813899
Robert Ayrapetyan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кстати, баг (или фиче) сборки 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 на всех форумах заключается именно в этом глюке.
...
Рейтинг: 0 / 0
Статическая линковка с libpq.a (MinGW)
    #34815623
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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 на всех форумах заключается именно в этом глюке.Нету глюков. Есть не умение читать документацию.
...
Рейтинг: 0 / 0
Статическая линковка с libpq.a (MinGW)
    #34816070
Robert Ayrapetyan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
про make clean я знал. Просто еще раз: скомпилить libpq.a статическую, а потом динамическую - можно вообще без make clean. Наоборот - нет.

Было бы понятно, если б без "make clean" вообще ничего собрать нельзя, а так - глюк.
...
Рейтинг: 0 / 0
Статическая линковка с libpq.a (MinGW)
    #34816301
ErV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Robert Ayrapetyan wrote:

> а так - глюк.
Это почему это? Почитайте, как make работает...
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Статическая линковка с libpq.a (MinGW)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]