Название: Как в qt-sdk-win собрать проект со статическими библиотеками Отправлено: Кутенок от Сентябрь 04, 2009, 14:57 Сильно не пинайте. Я прочитал несколько тем и статью в Вики, но все равно не понятно :( Ткните пальцем, где надо поставить галочку или что-то написать.
Название: Re: Как в qt-sdk-win собрать проект со статическими библиотеками Отправлено: Пантер от Сентябрь 04, 2009, 16:34 В вики все хорошо написано. Что именно не понятно?
Название: Re: Как в qt-sdk-win собрать проект со статическими библиотеками Отправлено: Кутенок от Сентябрь 04, 2009, 16:58 Цитировать Ключиком -static поставленая задача выполняется не полностью мне не понятно, где этот ключик надо прописатьНазвание: Re: Как в qt-sdk-win собрать проект со статическими библиотеками Отправлено: Пантер от Сентябрь 04, 2009, 17:43 В корневике Qt есть файлик configure. Вот его и нужно запускать, передав ему параметр -static.
Название: Re: Как в qt-sdk-win собрать проект со статическими библиотеками Отправлено: Joss от Сентябрь 05, 2009, 12:40 Краткое переложение:
1. Установить в PATH путь к mingw, например: D:\Progs\Qt\qtcreator\mingw\bin\ 2. Скачать http://get.qtsoftware.com/qt/source/qt-win-opensource-src-4.5.2.zip 3. Добавить (чтобы убрать зависимость от mingwm10.dll) в файле <QTDIR>\mkspecs\win32-g++\qmake.conf в строчку QMAKE_LFLAGS = -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc ключ -static 4. Выполнить configure -static -platform win32-g++ -release -no-exceptions 5. Выполнить mingw32-make sub-src Если ты уже собирал Qt с какими-то ключиками, а теперь хочешь собрать с другими, то сначала надо сделать make confclean а потом вcё по новой: configure с нужными ключами, make. Название: Re: Как в qt-sdk-win собрать проект со статическими библиотеками Отправлено: Кутенок от Сентябрь 07, 2009, 15:59 Спасибо за ответы. Если я правильно понял, то вы предлагаете мне самостоятельно собрать Qt, но меня интересует именно qt-sdk-win, что я отразил в названии темы. Возможно ли установив только qt-sdk-win, и не скачивая отдельно библиотеку, собирать программы, которые не нуждаются в mingwm10.dll, QtCore4.dll, QtGui4.dll и т.д.
У меня установлен qt-sdk-win-opensource-2009.03.1 Я прописал в файле C:\Qt\2009.03\qt\mkspecs\win32-g++\qmake.conf строку QMAKE_LFLAGS = -static -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc Я запускал C:\Qt\2009.03\qt\configure.exe -static запускал C:\Qt\2009.03\qt\configure.exe -static -platform win32-g++ -release -no-exceptions Запускал C:\Qt\2009.03\mingw\bin\mingw32-make.exe confclean потом C:\Qt\2009.03\qt\configure.exe -static -platform win32-g++ -release -no-exceptions потом C:\Qt\2009.03\mingw\bin\mingw32-make.exe sub-src Ничего не помогает Собранные в qt-sdk-win программы все равно требуют dll Название: Re: Как в qt-sdk-win собрать проект со статическими библиотеками Отправлено: Joss от Сентябрь 07, 2009, 16:18 Я же Вам написал - надо сделать все по шагам.
Буквально - надо собрать статическую версию Qt из исходников! Только тогда будет возможность собирать на ее основе релизные приложения, не зависящие от библиотек. На ее основе, имейте ввиду! Т.е. после сборки у Вас будет две библиотеки - обычная, которую Вы скачали ранее, и собраная Вами - при компиляции приложения в релиз указываете именно вторую Qt, собранную Вами по вышеуказанным шагам. Для дебажных целей оставляйте стандартную библиотеку. Название: Re: Как в qt-sdk-win собрать проект со статическими библиотеками Отправлено: Кутенок от Сентябрь 08, 2009, 10:20 Большое спасибо, Joss Теперь мне все понятно Я не понимал, что обязательно надо собрать Qt из исходников.
Название: Re: Как в qt-sdk-win собрать проект со статическими библиотеками Отправлено: Кутенок от Сентябрь 08, 2009, 10:36 Цитата: Wiki Прежде чем собрать приложение статически мы должны собрать статически Qt. Эту фразу из вики для таких как я лучше выделить жирным шрифтомНазвание: Re: Как в qt-sdk-win собрать проект со статическими библиотеками Отправлено: Noise от Ноябрь 06, 2009, 21:10 Помогите мне, пытаюсь тоже скомпилировать библиотеку, но не получается.
Вот так я пытаюсь это сделать! Цитировать @echo off rem rem This file is generated rem echo Setting up a MinGW/Qt only environment... echo -- QTDIR set to C:\Qt\4.5.3 echo -- PATH set to C:\Qt\4.5.3\bin echo -- Adding C:\MinGW\bin to PATH echo -- Adding %SystemRoot%\System32 to PATH echo -- QMAKESPEC set to win32-g++ set QTDIR=C:\Qt\4.5.3 set PATH=C:\Qt\4.5.3\bin set PATH=%PATH%;C:\MinGW\bin set PATH=%PATH%;%SystemRoot%\System32 set QMAKESPEC=win32-g++ if not "%1"=="compile_debug" goto END cd %QTDIR% echo This will configure and compile qt in debug. echo The release libraries will not be recompiled. pause mingw32-make clean configure -static -plugin-sql-sqlite -plugin-sql-odbc -qt-libpng -qt-libjpeg cd %QTDIR%\src #cd C:\Qt\4.5.3\src qmake mingw32-make debug :END а вот такое мне выводиться Цитировать g++ -static -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-ps eudo-reloc -Wl,-subsystem,console -mthreads -Wl -o ..\..\..\bin\uic3.exe object_ script.uic3.Debug -L"c:\Qt\4.5.3\lib" -L"c:\Qt\4.5.3\lib" -lQt3Supportd -lQtSql d -lQtXmld -lQtGuid -lQtNetworkd -lgdi32 -lcomdlg32 -loleaut32 -limm32 -lwinmm - lwinspool -lmsimg32 -lQtCored -lkernel32 -luser32 -lshell32 -luuid -lole32 -ladv api32 -lws2_32 c:\Qt\4.5.3\lib\libQtGuid.a(qapplication.o)(.text+0x10c): In function `Z13initRe sourcesv': C:/Qt/4.5.3/src/gui/kernel/qapplication.cpp:111: undefined reference to `qInitRe sources_qpaintengine_d3d()' c:\Qt\4.5.3\lib\libQtGuid.a(qwidget_win.o)(.text+0x9350): In function `Z13_qt_d3 dEnginev': C:/Qt/4.5.3/src/gui/kernel/qwidget_win.cpp:1938: undefined reference to `QDirect 3DPaintEngine::QDirect3DPaintEngine()' c:\Qt\4.5.3\lib\libQtGuid.a(qwidget_win.o)(.text+0x9461): In function `Z18cleanu p_d3d_enginev': C:/Qt/4.5.3/src/gui/kernel/qwidget_win.cpp:1944: undefined reference to `QDirect 3DPaintEngine::cleanup()' c:\Qt\4.5.3\lib\libQtGuid.a(qwidget_win.o)(.text+0x94b9): In function `ZNK7QWidg et11paintEngineEv': C:/Qt/4.5.3/src/gui/kernel/qwidget_win.cpp:2065: undefined reference to `QDirect 3DPaintEngine::hasDirect3DSupport()' c:\Qt\4.5.3\lib\libQtGuid.a(qwidget_win.o)(.text+0x94ed):C:/Qt/4.5.3/src/gui/ker nel/qwidget_win.cpp:2071: undefined reference to `QDirect3DPaintEngine::setFlush OnEnd(bool)' c:\Qt\4.5.3\lib\libQtGuid.a(qwidget_win.o)(.text+0x9502):C:/Qt/4.5.3/src/gui/ker nel/qwidget_win.cpp:2073: undefined reference to `QDirect3DPaintEngine::setFlush OnEnd(bool)' c:\Qt\4.5.3\lib\libQtGuid.a(qwidget_win.o)(.text+0x95b9): In function `ZN14QWidg etPrivate30createDefaultWindowSurface_sysEv': C:/Qt/4.5.3/src/gui/kernel/qwidget_win.cpp:2107: undefined reference to `QDirect 3DPaintEngine::hasDirect3DSupport()' c:\Qt\4.5.3\lib\libQtGuid.a(qwidget_win.o)(.text+0x95e5):C:/Qt/4.5.3/src/gui/ker nel/qwidget_win.cpp:2109: undefined reference to `QD3DWindowSurface::QD3DWindowS urface(QWidget*)' collect2: ld returned 1 exit status mingw32-make[2]: *** [..\..\..\bin\uic3.exe] Error 1 mingw32-make[2]: Leaving directory `C:/Qt/4.5.3/src/tools/uic3' mingw32-make[1]: *** [debug] Error 2 mingw32-make[1]: Leaving directory `C:/Qt/4.5.3/src/tools/uic3' mingw32-make: *** [debug-C__Qt_4_5_3_src_tools_uic3] Error 2 C:\Qt\4.5.3\src> Название: Re: Как в qt-sdk-win собрать проект со статическими библиотеками Отправлено: lit-uriy от Ноябрь 06, 2009, 22:29 >>configure -static -plugin-sql-sqlite -plugin-sql-odbc -qt-libpng -qt-libjpeg
При статической сборке, плагины работать не будут. Надо их внутрь Qt совать: configure -static -qt-sql-sqlite -qt-sql-odbc -qt-libpng -qt-libjpeg Название: Re: Как в qt-sdk-win собрать проект со статическими библиотеками Отправлено: Noise от Ноябрь 06, 2009, 23:50 спасибо! А где можно почитать что нельзя а что множно?
А теперь у меня таже ошибка( Цитировать g++ -static -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-ps eudo-reloc -Wl,-subsystem,console -mthreads -Wl -o ..\..\..\bin\uic3.exe object_ script.uic3.Debug -L"c:\Qt\4.5.3\lib" -L"c:\Qt\4.5.3\lib" -lQt3Supportd -lQtSql d -lQtXmld -lQtGuid -lQtNetworkd -lgdi32 -lcomdlg32 -loleaut32 -limm32 -lwinmm - lwinspool -lmsimg32 -lodbc32 -lQtCored -lkernel32 -luser32 -lshell32 -luuid -lol e32 -ladvapi32 -lws2_32 c:\Qt\4.5.3\lib\libQtGuid.a(qapplication.o)(.text+0x10c): In function `Z13initRe sourcesv': C:/Qt/4.5.3/src/gui/kernel/qapplication.cpp:111: undefined reference to `qInitRe sources_qpaintengine_d3d()' c:\Qt\4.5.3\lib\libQtGuid.a(qwidget_win.o)(.text+0x9350): In function `Z13_qt_d3 dEnginev': C:/Qt/4.5.3/src/gui/kernel/qwidget_win.cpp:1938: undefined reference to `QDirect 3DPaintEngine::QDirect3DPaintEngine()' c:\Qt\4.5.3\lib\libQtGuid.a(qwidget_win.o)(.text+0x9461): In function `Z18cleanu p_d3d_enginev': C:/Qt/4.5.3/src/gui/kernel/qwidget_win.cpp:1944: undefined reference to `QDirect 3DPaintEngine::cleanup()' c:\Qt\4.5.3\lib\libQtGuid.a(qwidget_win.o)(.text+0x94b9): In function `ZNK7QWidg et11paintEngineEv': C:/Qt/4.5.3/src/gui/kernel/qwidget_win.cpp:2065: undefined reference to `QDirect 3DPaintEngine::hasDirect3DSupport()' c:\Qt\4.5.3\lib\libQtGuid.a(qwidget_win.o)(.text+0x94ed):C:/Qt/4.5.3/src/gui/ker nel/qwidget_win.cpp:2071: undefined reference to `QDirect3DPaintEngine::setFlush OnEnd(bool)' c:\Qt\4.5.3\lib\libQtGuid.a(qwidget_win.o)(.text+0x9502):C:/Qt/4.5.3/src/gui/ker nel/qwidget_win.cpp:2073: undefined reference to `QDirect3DPaintEngine::setFlush OnEnd(bool)' c:\Qt\4.5.3\lib\libQtGuid.a(qwidget_win.o)(.text+0x95b9): In function `ZN14QWidg etPrivate30createDefaultWindowSurface_sysEv': C:/Qt/4.5.3/src/gui/kernel/qwidget_win.cpp:2107: undefined reference to `QDirect 3DPaintEngine::hasDirect3DSupport()' c:\Qt\4.5.3\lib\libQtGuid.a(qwidget_win.o)(.text+0x95e5):C:/Qt/4.5.3/src/gui/ker nel/qwidget_win.cpp:2109: undefined reference to `QD3DWindowSurface::QD3DWindowS urface(QWidget*)' collect2: ld returned 1 exit status mingw32-make[2]: *** [..\..\..\bin\uic3.exe] Error 1 mingw32-make[2]: Leaving directory `C:/Qt/4.5.3/src/tools/uic3' mingw32-make[1]: *** [debug] Error 2 mingw32-make[1]: Leaving directory `C:/Qt/4.5.3/src/tools/uic3' mingw32-make: *** [debug-C__Qt_4_5_3_src_tools_uic3] Error 2 C:\Qt\4.5.3\src> Название: Re: Как в qt-sdk-win собрать проект со статическими библиотеками Отправлено: shadone от Ноябрь 07, 2009, 01:30 похоже вы пытаетесь собрать Qt с опцией configure -direct3d. Эта опция считается экспериментальной и не поддерживается официально. Говоря откровенно - она не работает и не будет, и будет исключена из Qt.
Название: Re: Как в qt-sdk-win собрать проект со статическими библиотеками Отправлено: lit-uriy от Ноябрь 07, 2009, 04:04 Цитировать А где можно почитать что нельзя а что множно? Вобщем-то плагины Qt можно использовать, но есть ограничения и некоторые дополнительные телодвижения (тык (http://www.doc.crossplatform.ru/qt/4.4.3/plugins-howto.html#static-plugins))Название: Re: Как в qt-sdk-win собрать проект со статическими библиотеками Отправлено: Noise от Ноябрь 07, 2009, 08:14 Возможно я что не так написал, но как его отключить?
Вот строка конигура которую я написал configure -static -no-direct3d -qt-sql-sqlite -qt-sql-odbc -qt-libpng -qt-libjpeg Цитировать g++ -static -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-ps eudo-reloc -Wl,-subsystem,console -mthreads -Wl -o ..\..\..\bin\uic3.exe object_ script.uic3.Debug -L"c:\Qt\4.5.3\lib" -L"c:\Qt\4.5.3\lib" -lQt3Supportd -lQtSql d -lQtXmld -lQtGuid -lQtNetworkd -lgdi32 -lcomdlg32 -loleaut32 -limm32 -lwinmm - lwinspool -lmsimg32 -lodbc32 -lQtCored -lkernel32 -luser32 -lshell32 -luuid -lol e32 -ladvapi32 -lws2_32 c:\Qt\4.5.3\lib\libQtGuid.a(qapplication.o)(.text+0x10c): In function `Z13initRe sourcesv': C:/Qt/4.5.3/src/gui/kernel/qapplication.cpp:111: undefined reference to `qInitRe sources_qpaintengine_d3d()' c:\Qt\4.5.3\lib\libQtGuid.a(qwidget_win.o)(.text+0x9350): In function `Z13_qt_d3 dEnginev': C:/Qt/4.5.3/src/gui/kernel/qwidget_win.cpp:1938: undefined reference to `QDirect 3DPaintEngine::QDirect3DPaintEngine()' c:\Qt\4.5.3\lib\libQtGuid.a(qwidget_win.o)(.text+0x9461): In function `Z18cleanu p_d3d_enginev': C:/Qt/4.5.3/src/gui/kernel/qwidget_win.cpp:1944: undefined reference to `QDirect 3DPaintEngine::cleanup()' c:\Qt\4.5.3\lib\libQtGuid.a(qwidget_win.o)(.text+0x94b9): In function `ZNK7QWidg et11paintEngineEv': C:/Qt/4.5.3/src/gui/kernel/qwidget_win.cpp:2065: undefined reference to `QDirect 3DPaintEngine::hasDirect3DSupport()' c:\Qt\4.5.3\lib\libQtGuid.a(qwidget_win.o)(.text+0x94ed):C:/Qt/4.5.3/src/gui/ker nel/qwidget_win.cpp:2071: undefined reference to `QDirect3DPaintEngine::setFlush OnEnd(bool)' c:\Qt\4.5.3\lib\libQtGuid.a(qwidget_win.o)(.text+0x9502):C:/Qt/4.5.3/src/gui/ker nel/qwidget_win.cpp:2073: undefined reference to `QDirect3DPaintEngine::setFlush OnEnd(bool)' c:\Qt\4.5.3\lib\libQtGuid.a(qwidget_win.o)(.text+0x95b9): In function `ZN14QWidg etPrivate30createDefaultWindowSurface_sysEv': C:/Qt/4.5.3/src/gui/kernel/qwidget_win.cpp:2107: undefined reference to `QDirect 3DPaintEngine::hasDirect3DSupport()' c:\Qt\4.5.3\lib\libQtGuid.a(qwidget_win.o)(.text+0x95e5):C:/Qt/4.5.3/src/gui/ker nel/qwidget_win.cpp:2109: undefined reference to `QD3DWindowSurface::QD3DWindowS urface(QWidget*)' collect2: ld returned 1 exit status mingw32-make[2]: *** [..\..\..\bin\uic3.exe] Error 1 mingw32-make[2]: Leaving directory `C:/Qt/4.5.3/src/tools/uic3' mingw32-make[1]: *** [debug] Error 2 mingw32-make[1]: Leaving directory `C:/Qt/4.5.3/src/tools/uic3' mingw32-make: *** [debug-C__Qt_4_5_3_src_tools_uic3] Error 2 Название: Re: Как в qt-sdk-win собрать проект со статическими библиотеками Отправлено: lit-uriy от Ноябрь 07, 2009, 09:27 Noise, такое ощущение, что у тебя есть скомпиленные ранее объектники. Если так, то перед новой конфигурацией нужно делать:
Код
Название: Re: Как в qt-sdk-win собрать проект со статическими библиотеками Отправлено: Noise от Ноябрь 07, 2009, 09:44 к сожалению я это делаю :(
Я не знаю как без direct3d скомпилить. Подскажите? Название: Re: Как в qt-sdk-win собрать проект со статическими библиотеками Отправлено: lit-uriy от Ноябрь 07, 2009, 11:55 >>Я не знаю как без direct3d скомпилить. Подскажите?
да он по умолчанию и не используется, если Direct3D SDK не установлен в системе. Название: Re: Как в qt-sdk-win собрать проект со статическими библиотеками Отправлено: lit-uriy от Ноябрь 07, 2009, 11:57 можно попробовать убить все файлы в каталоге %QTDIR%/lib и все подкаталоги tmp и все make-файлы по маске: Makefile*.
Затем повторить конфигурацию Название: Re: Как в qt-sdk-win собрать проект со статическими библиотеками Отправлено: frostyland от Август 30, 2010, 19:46 Краткое переложение: 1. Установить в PATH путь к mingw, например: D:\Progs\Qt\qtcreator\mingw\bin\ 2. Скачать http://get.qtsoftware.com/qt/source/qt-win-opensource-src-4.5.2.zip 3. Добавить (чтобы убрать зависимость от mingwm10.dll) в файле <QTDIR>\mkspecs\win32-g++\qmake.conf в строчку QMAKE_LFLAGS = -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc ключ -static 4. Выполнить configure -static -platform win32-g++ -release -no-exceptions 5. Выполнить mingw32-make sub-src Если ты уже собирал Qt с какими-то ключиками, а теперь хочешь собрать с другими, то сначала надо сделать make confclean а потом вcё по новой: configure с нужными ключами, make. Почему-то у меня спотыкается Код: mingw32-make sub-src До определенного момента все идет прекрасно и вдруг вот такое: Код: mingw32-make[1]: Entering directory `C:/Qt/4.7.0rc1/src/tools/bootstrap' Причем, путь до ld.exe, хотя и такой заковыристый, но все-таки правильный. Или дело не в нем? С уважением, ВВК |