crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> Статическая линковка
acen83
  опции профиля:
сообщение 6.7.2008, 14:50
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 23
Регистрация: 11.2.2008
Пользователь №: 91

Спасибо сказали: 0 раз(а)




Репутация:   0  


Начальство потребовало программу в виде одного большого экзешника. :blink:
Делать нечего, скачал qt-4.4.0, скомпилил (configure -debug-and-release -static -qt-libpng -qt-libjpeg -no-qt3support)...
Ужаснулся размеру (папка qt содержит ~33000 файлов, весит ~14 гигов (и это я еще вырубил компиляцию экзамплов на середине, так как задрался ждать...))...
Может зря? но те экзамплы что успели скомпилиться - работают, так что думаю со сборкой все ок... :huh:

Итак, запускаю Code::blocks, ставлю пути на папку 4.4.0, подключаю QtCore и QtGui, набиваю текст
#include <QApplication>

int main(int argc, char* argv[])
{
    QApplication app(argc, argv);

    return app.exec();
}


...запускаю. На линковке высыпаются ошибки (тут маленький кусок)
E:\Programs\Qt\440\lib\libQtCore.a(qeventdispatcher_win.o):qeventdispatcher_win.cpp:(.text+0xa62)|
|undefined reference to `_WSAAsyncSelect@16'|
E:\Programs\Qt\440\lib\libQtCore.a(qfsfileengine_win.o):qfsfileengine_win.cpp:(.text+0x40cd)||unde
fined reference to `_CoCreateInstance@20'|
E:\Programs\Qt\440\lib\libQtGui.a(qtextedit.o):qtextedit.cpp:(.text+0x2d3)||undefined reference to `QBasicTimer::stop()'|
E:\Programs\Qt\440\lib\libQtGui.a(qtextedit.o):qtextedit.cpp:(.text+0x28ca)||undefined reference to `QBasicTimer::start(int, QObject*)'|
E:\Programs\Qt\440\lib\libQtGui.a(qtextedit.o):qtextedit.cpp:(.text$_ZN16QTextEditPrivateD1Ev[QTextEditPrivate::~QTextEditPrivate()]+0x87)||und
efined reference to `QBasicTimer::stop()'|
E:\Programs\Qt\440\lib\libQtGui.a(qtextedit.o):qtextedit.cpp:(.text$_ZN16QTextEditPrivateD1Ev[QTextEditPrivate::~QTextEditPrivate()]+0x131)||un
defined reference to `QBasicTimer::stop()'|


Попробовал через "qmake -project, qmake, make" - та же ботва....
Может кто сталкивался с подобным? :o

Сообщение отредактировал Litkevich Yuriy - 15.7.2008, 18:15
Причина редактирования: для кода используем тэг: code=cpp
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
rich
  опции профиля:
сообщение 7.7.2008, 21:58
Сообщение #2


Участник
**

Группа: Участник
Сообщений: 123
Регистрация: 1.3.2008
Пользователь №: 109

Спасибо сказали: 6 раз(а)




Репутация:   0  


а этим
.
g++ -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-rel
oc -Wl,-s -mthreads -Wl -Wl,-subsystem,windows -o "..\..\bin\assistant.exe" obje
ct_script.assistant.Release  -L"c:\Qt\4.3.2\lib" -L"c:\Qt\4.3.2\lib" -lmingw32 -
lqtmain tmp\obj\release_static\assistant_res.o -lQtXml -lQtGui -lQtNetwork -lgdi
32 -lcomdlg32 -loleaut32 -limm32 -lwinmm -lwinspool -lmsimg32 -lQtCore -lkernel3
2 -luser32 -lshell32 -luuid -lole32 -ladvapi32 -lws2_32
C:\Qt\MinGW\bin\..\lib\gcc\mingw32\3.4.2\..\..\..\..\mingw32\bin\ld.exe: cannot
open output file ..\..\bin\assistant.exe: Permission denied
collect2: ld returned 1 exit status
mingw32-make[3]: *** [..\..\bin\assistant.exe] Error 1
mingw32-make[3]: Leaving directory `C:/Qt/4.3.2/tools/assistant'
mingw32-make[2]: *** [release] Error 2
mingw32-make[2]: Leaving directory `C:/Qt/4.3.2/tools/assistant'
mingw32-make[1]: *** [sub-assistant-make_default-ordered] Error 2
mingw32-make[1]: Leaving directory `C:/Qt/4.3.2/tools'
mingw32-make: *** [sub-tools-make_default-ordered] Error 2

(configure кончилось,вот только что.
простой пример,компалил минуть 5ть, а в итоге 55,9 МБ вместо 2,28 МБ и всЁ равно без mingwn10.dll не запускается :unsure: :unsure:

Цитата(ViGOur @ 6.7.2008, 17:17) *
А ты при сборке этого примера указал, чтобы он собирался как статический?

Посмотри *.pro файлы примеров, которые у тебя работаю... ;)

а что при сборке указывать надо?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме
- acen83   Статическая линковка   6.7.2008, 14:50
- - ViGOur   А ты при сборке этого примера указал, чтобы он соб...   6.7.2008, 16:17
- - acen83   *DELETED* UPDATE: Подсмотрел в MakeFil'e пара...   6.7.2008, 17:07
- - rich   решил Qt пересобрать статично, сделал make confcle...   7.7.2008, 19:47
- - ViGOur   В принципе make confclean достаточно быстро отраба...   7.7.2008, 21:42
- - rich   а этим . g++ -enable-stdcall-fixup -Wl,-enable-aut...   7.7.2008, 21:58
- - Гость   rich, Цитатарешил Qt пересобрать статично, сделал...   8.7.2008, 9:35
- - void*   Цитата(Гость_Гость_* @ 8.7.2008, 9:35) ск...   8.7.2008, 13:18
|- - rich   Цитата(void* @ 8.7.2008, 13:18) Цитата(Го...   8.7.2008, 18:52
- - void*   Цитата(rich @ 8.7.2008, 18:52) тоесть как...   8.7.2008, 19:25
|- - rich   Цитата(void* @ 8.7.2008, 19:25) Цитата(ri...   8.7.2008, 19:50
- - void*   по-моему достаточно статической сборки самого Qt. ...   8.7.2008, 20:57
- - ViGOur   Цитата(void* @ 8.7.2008, 21:57) или прост...   9.7.2008, 8:11
- - void*   может быть, я в винде не собирал, поэтому точно ск...   9.7.2008, 9:34
- - Litkevich Yuriy   Цитата(rich @ 8.7.2008, 23:50) а что при ...   15.7.2008, 18:19
- - Red Devil   Вроде как для того чтобы убрать зависимость от min...   15.7.2008, 20:55
- - Litkevich Yuriy   относительно компиллерной библиотеки: Цитата<QT...   15.7.2008, 21:15


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


3 чел. читают эту тему (гостей: 3, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 19.1.2025, 4:02