crossplatform.ru

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

2 страниц V   1 2 >  
Ответить в данную темуНачать новую тему
> Статическая линковка
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
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 6.7.2008, 16:17
Сообщение #2


Мастер
******

Группа: Модератор
Сообщений: 3291
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

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




Репутация:   40  


А ты при сборке этого примера указал, чтобы он собирался как статический?

Посмотри *.pro файлы примеров, которые у тебя работаю... ;)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
acen83
  опции профиля:
сообщение 6.7.2008, 17:07
Сообщение #3


Студент
*

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

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




Репутация:   0  


*DELETED*

UPDATE:
Подсмотрел в MakeFil'e параметры линковщика

-lmingw32 -lqtmain -lQtGui -lgdi32 -lcomdlg32 -loleaut32 -limm32 -lwinmm -lwinspool -lmsimg32 -lQtCore -lkernel32 -luser32 -lshell32 -luuid -lole32 -ladvapi32 -lws2_32

воткнул в codeblocks - заработало... спасибо за наводку ;)

Сообщение отредактировал acen83 - 6.7.2008, 17:16
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
rich
  опции профиля:
сообщение 7.7.2008, 19:47
Сообщение #4


Участник
**

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

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




Репутация:   0  


решил Qt пересобрать статично, сделал make confclean.
это нормально что в конце такое:
Не удается найти C:\Qt\4.3.2\qmake\project.o
del qmake
Не удается найти C:\Qt\4.3.2\qmake\qmake
mingw32-make[1]: Leaving directory `C:/Qt/4.3.2/qmake'
:huh:
make confclean быстро выполнился,если выполнился конечно :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 7.7.2008, 21:42
Сообщение #5


Мастер
******

Группа: Модератор
Сообщений: 3291
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

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




Репутация:   40  


В принципе make confclean достаточно быстро отрабатывает, по крайней мере у меня на машине.
А это по идее нормально, так как qmake вроде тоде должен удаляться, честно говоря не обращал внимания.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
rich
  опции профиля:
сообщение 7.7.2008, 21:58
Сообщение #6


Участник
**

Группа: Участник
Сообщений: 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 файлы примеров, которые у тебя работаю... ;)

а что при сборке указывать надо?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_Гость_*
сообщение 8.7.2008, 9:35
Сообщение #7





Гости








    


rich,
Цитата
решил Qt пересобрать статично, сделал make confclean.
это нормально что в конце такое:
Не удается найти C:\Qt\4.3.2\qmake\project.o
del qmake
Не удается найти C:\Qt\4.3.2\qmake\qmake
mingw32-make[1]: Leaving directory `C:/Qt/4.3.2/qmake'

make confclean быстро выполнился,если выполнился конечно

Лучше удаляй все папку, раскоковывай qt и заново собирай - эти скрипты (confclean) ужасно глючат после того если хотя бы один файл не был найден, они заканчивают свою работу, не доводя ее до конца.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
void*
  опции профиля:
сообщение 8.7.2008, 13:18
Сообщение #8


Программист-самоучка
***

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

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




Репутация:   3  


Цитата(Гость_Гость_* @ 8.7.2008, 9:35) *
скрипты (confclean) ужасно глючат

как сказать :) у меня сейчас собрана Qt перед сборкой которой я раз пять собирал ее и делал make confclean'ы
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
rich
  опции профиля:
сообщение 8.7.2008, 18:52
Сообщение #9


Участник
**

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

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




Репутация:   0  


Цитата(void* @ 8.7.2008, 13:18) *
Цитата(Гость_Гость_* @ 8.7.2008, 9:35) *
скрипты (confclean) ужасно глючат

как сказать :) у меня сейчас собрана Qt перед сборкой которой я раз пять собирал ее и делал make confclean'ы

эээ.. :scratch_one-s_head: тоесть как я понял несколько сборок Qt перед успешной?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
void*
  опции профиля:
сообщение 8.7.2008, 19:25
Сообщение #10


Программист-самоучка
***

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

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




Репутация:   3  


Цитата(rich @ 8.7.2008, 18:52) *
тоесть как я понял несколько сборок Qt перед успешной?

это я экспериментировал, ты не думай что ее надо по пять раз собирать :) достаточно одного :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




RSS Текстовая версия Сейчас: 12.8.2020, 15:01