Название: Помогите please! Компиляция со статическими библиотеками Отправлено: se от Июнь 15, 2005, 15:08 Хочу создать программу, которая будет работать на другом компьютере, не имеющем вообще никаких библиотек, содержащем только ОС Linux. Программа не должна иметь динамически подключаемых библиотек, только статические (в ней самой). В свойствах проекта ставлю опцию -static. При запуске "make" на конечной стадии возникает ошибка:
g++ -o testpr main.o test.o testform.o moc_test.o moc_testform.o -L/usr/lib/qt3//lib -L/usr/X11R6/lib -static -lqt-mt -lXext -lX11 -lm /usr/bin/ld: cannot find -lqt-mt collect2: ld returned 1 exit status Без опции -static все компилируется, но имеется куча ссылок на разные библиотеки. Как мне добиться желаемого результата? Чего не хватает? Название: Помогите please! Компиляция со статическими библиотеками Отправлено: joktar от Июнь 18, 2005, 06:39 1.Полностью статически неполучится(например из-за glibc), так ли это необходимо?Ведь если на машине есть KDE 3.x то Qt там есть тоже(возможно более старая)
2.Qt по умолчанию собирается как dll, ее надо пересобрать, указав configure ключ -static вместо -shared(при этом ты также потеряеш возможность например использовать плагины в Qt Название: Помогите please! Компиляция со статическими библиотеками Отправлено: ANM от Июнь 20, 2005, 09:50 Цитата: "joktar" Полностью статически неполучится(например из-за glibc) glibc запросто линкуется статически. Код: #include <iostream> компилируем без ключа -static
libstdc++.so.5 => /usr/lib/libstdc++.so.5 (0x40006000) libm.so.6 => /lib/libm.so.6 (0x400bd000) libgcc_s.so.1 => /usr/lib/libgcc_s.so.1 (0x400e0000) libc.so.6 => /lib/libc.so.6 (0x400e8000) /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x80000000) с ключем -static
statically linked Название: Помогите please! Компиляция со статическими библиотеками Отправлено: se от Июнь 21, 2005, 13:26 Спасибо за участие.
На целевом компьютере стоит только ОС Linux без KDE3.x и т.п. Там не ничего. Цель - создать приложение, использующее минимум shared библиотек (лучше без них вообще). Я так понимаю мне предлагается переустановить Qt с ключем -static? Без плагинов не могу. Новая информация к размышлению: убрал из проекта поток, при сборке компилятор выдает следующее: g++ -c -pipe -Wall -W -O2 -fomit-frame-pointer -pipe -march=i586 -mtune=pentiumpro -DQT_NO_DEBUG -DQT_SHARED -DQT_THREAD_SUPPORT -I/usr/lib/qt3/mkspecs/default -I. -I/usr/lib/qt3//include -o moc_testform.o moc_testform.cpp g++ -o testpr main.o test.o testform.o moc_test.o moc_testform.o -L/usr/lib/qt3//lib -L/usr/X11R6/lib -static -lqt-mt -lXext -lX11 -lm /usr/bin/ld: cannot find -lXext collect2: ld returned 1 exit status make: *** [testpr] Ошибка 1 Причем даже если убрать -DQT_SHARED - все равно появляется эта ошибка! Может у меня чего-то не доустановлено (какой-нибудь develop'ерский пакет)? Qt у меня 3.3.3 |