URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 3949
[ Назад ]

Исходное сообщение
"Как слинковать прогу статически?"

Отправлено Serega_S , 11-Фев-05 13:41 
Указываю -static:
make
g++ -L/usr/local/qt/lib -lqt-mt -g3 -static massiv_int.o massiv_char.o ini.o sockets.o main.o wnd.moc.o wnd.o main_wnd.moc.o main_wnd.o functions.o -o main
/usr/lib/gcc-lib/i386-slackware-linux/3.2.2/../../../../i386-slackware-linux/bin/ld: cannot find -lqt-mt
collect2: ld returned 1 exit status
make: *** [main] Ошибка 1

Если же не статически, то всё нормально... :-(

Может конечно и ламерский вопрос, но всё же подскажите плз.! :-)

PS: Если убираю -lqt-mt - совсем начинает на qt-ые ругаться...


Содержание

Сообщения в этом обсуждении
"Как слинковать прогу статически?"
Отправлено Maxim Kuznetsov , 11-Фев-05 16:36 
>Указываю -static:
> make
>g++ -L/usr/local/qt/lib -lqt-mt -g3 -static massiv_int.o massiv_char.o ini.o sockets.o main.o wnd.moc.o wnd.o
>main_wnd.moc.o main_wnd.o functions.o -o main
>/usr/lib/gcc-lib/i386-slackware-linux/3.2.2/../../../../i386-slackware-linux/bin/ld: cannot find -lqt-mt
>collect2: ld returned 1 exit status
>make: *** [main] Ошибка 1
>
>Если же не статически, то всё нормально... :-(
>
>Может конечно и ламерский вопрос, но всё же подскажите плз.! :-)
>
>PS: Если убираю -lqt-mt - совсем начинает на qt-ые ругаться...

есть подозрение, что никак ;-(
Qt поддерживает static таргет только на Вынь-платформах, для этого
ей надо доп. флаги в qmake.pro ставить..
можешь убедиться - в каталоге qt/lib отсутствует libqt-mt.a


"Как слинковать прогу статически?"
Отправлено Serega_S , 11-Фев-05 17:48 
>есть подозрение, что никак ;-(
>Qt поддерживает static таргет только на Вынь-платформах, для этого
>ей надо доп. флаги в qmake.pro ставить..
>можешь убедиться - в каталоге qt/lib отсутствует libqt-mt.a

И в правду там нет libqt-mt.a... :-(

Хм, но у меня опера статически слинкованная с qt стоит... Как-то же они её линковали под линь...
Глупость это какая-то... Уже, блин, жалею, что проект на qt начал, хоть и один только интерфейс на нём...


"Как слинковать прогу статически?"
Отправлено MaximKuznetsov , 11-Фев-05 22:29 
>>есть подозрение, что никак ;-(
>>Qt поддерживает static таргет только на Вынь-платформах, для этого
>>ей надо доп. флаги в qmake.pro ставить..
>>можешь убедиться - в каталоге qt/lib отсутствует libqt-mt.a
>
> И в правду там нет libqt-mt.a... :-(
>
>Хм, но у меня опера статически слинкованная с qt стоит... Как-то же
>они её линковали под линь...
>Глупость это какая-то... Уже, блин, жалею, что проект на qt начал, хоть
>и один только интерфейс на нём...
У них под линь - комерческая реализация с поддержкой производителя ;-)
так что вот таким хитрым образом и линковали ;-)
А вот жадеть что начал проект на qt не стоит - всё-же при всем богатстве выбора, наиболее удобная и продвинутая библиотека..Еще 4-ка выйдет с GPL под винь - вообче альтернативы отсутствуют



"Как слинковать прогу статически?"
Отправлено gyn61 , 11-Фев-05 23:19 
Вставлю свои пять копеек. У меня не Slackware - у неня ALT Linux. Но я смотрю на qt3.spec и вижу:

%define static_nonthr 0
%define static_thread 0
%define shared_nonthr 0
%define shared_thread 1

Получается что qt3 можно собрать в разных вариантах, только майнтейнеры почему-то предлагают только один. Может попробывать откорректировать .spec и собрать статическую библиотеку qt?


"Как слинковать прогу статически?"
Отправлено Alexander S. Salieff , 14-Фев-05 17:23 
>Вставлю свои пять копеек. У меня не Slackware - у неня ALT
>Linux. Но я смотрю на qt3.spec и вижу:
>
>%define static_nonthr 0
>%define static_thread 0
>%define shared_nonthr 0
>%define shared_thread 1
>
>Получается что qt3 можно собрать в разных вариантах, только майнтейнеры почему-то предлагают
>только один. Может попробывать откорректировать .spec и собрать статическую библиотеку qt?
>

Собрать-то можно (на практике - не без патчей), но при этом отрубаются некоторые фичи вроде виджет-тем и SQL-модулей. И на мастдайной статической сборке то же самое.
Вообще-то это логично. Делать статические либы, использующие dynamic loading/linking в run-time, это оч гемморное занятие, и многие производители на это забивают. К примеру попробуйте собрать UNXI-ODBC в статике и слинковаться с ним, ничего хорошего (если не считать хорошим segfault ;) из этого не выйдет.
Я игрался со статической сборкой QT еще со времен QT2, при этом даже если не волнует исчезновение некоторых фич, нестабильные бинари какие-то выходят... Да и смысл? Динамический бинарь+шаред либа немногим больше по размеру, чем статический бинарь, зато куда стабильнее. Так что я просто кладу qt-mt.so/dll в один каталог с бинарем, и все ок.