http://blog.lugru.com/2009/03/qt-static-mingwm10dll-and-deployment-under-windows-environment/
需要修改 %qtdir%\mkspecs\win32-g++\qmake.conf,
QMAKE_LFLAGS = -static -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc
這樣可以編譯出 static link 的執行檔案, 不需要附加一堆 dll 檔案 (qt windows version)。
使用以下的 configure 參數來編譯 QT:
configure -static -release -no-exceptions -no-qt3support
不過在 qt-4.6.2 有問題, 編譯到後方, 有些錯誤訊息:
e:\qt-everywhere-opensource-src-4.6.2\lib\libQtWebKit.a(MediaPlayerPrivatePhonon .o):MediaPlayerPrivatePhonon.cpp:(.text+0xfc1): undefined reference to `_imp___Z N6Phonon10createPathEPNS_9MediaNodeES1_' e:\qt-everywhere-opensource-src-4.6.2\lib\libQtWebKit.a(MediaPlayerPrivatePhonon .o):MediaPlayerPrivatePhonon.cpp:(.text+0xfd0): undefined reference to `_imp___Z N6Phonon4PathD1Ev' collect2: ld returned 1 exit status mingw32-make[5]: *** [..\..\..\..\bin\assistant.exe] Error 1 mingw32-make[5]: Leaving directory `E:/qt-everywhere-opensource-src-4.6.2/tools/ assistant/tools/assistant' mingw32-make[4]: *** [release] Error 2 mingw32-make[4]: Leaving directory `E:/qt-everywhere-opensource-src-4.6.2/tools/ assistant/tools/assistant' mingw32-make[3]: *** [sub-assistant-make_default-ordered] Error 2 mingw32-make[3]: Leaving directory `E:/qt-everywhere-opensource-src-4.6.2/tools/ assistant/tools' mingw32-make[2]: *** [sub-tools-make_default-ordered] Error 2 mingw32-make[2]: Leaving directory `E:/qt-everywhere-opensource-src-4.6.2/tools/ assistant' mingw32-make[1]: *** [sub-assistant-make_default-ordered] Error 2 mingw32-make[1]: Leaving directory `E:/qt-everywhere-opensource-src-4.6.2/tools' mingw32-make: *** [sub-tools-make_default-ordered] Error 2
但是有產生出 qt library, 我用來編譯程式, 沒有問題, 可以產生 static 版本的 qt 程式。
換成以下的 configure 參數:
configure -static -release -no-exceptions -no-qt3support -no-dsp -no-s60 -no-webkit
就可以了。
windows only:
-no-sdp
沒有留言:
張貼留言
使用 google 的 reCAPTCHA 驗證碼, 總算可以輕鬆留言了。
我實在受不了 spam 了, 又不想讓大家的眼睛花掉, 只好放棄匿名留言。這是沒辦法中的辦法了。留言的朋友需要有 google 帳號。