QT靜態編譯

一般我們在學習QT的時候寫程序用的都是動態編譯,如果將動態編譯出來的可執行文件直接發佈的話,在別的機子是無法運行的。所以這裏教一下大家如何配置QT的靜態編譯環境。
 
測試環境:Win7旗艦版SP1
首先最好將minGW加入環境變量,我的地址爲D:\software\QT5.9.0\Tools\mingw530_32\bin
 
編譯靜態庫:
1、我的QT是5.9.0的,所以要到官網下載該版本的源碼:
http://download.qt.io/official_releases/qt/5.9/5.9.0/single/qt-everywhere-opensource-src-5.9.0.zip
下載後將其解壓到任意位置,路徑最好不帶中文。
2、新建一個文件夾,用於存儲編譯後的靜態庫,我這裏爲D:\QT5.9.0_static
3、在解壓後有源碼的文件夾下(文件夾中有configure.bat文件),按shift+右鍵,選擇「在此處打開命令窗口」,打開CMD。輸入命令並執行:configure.bat-confirm-license -opensource -prefix "D:\QT5.9.0_static"-debug-and-release -static -platform win32-g++ -opengl desktop -no-angle-nomake examples -nomake tests -skip qtwebkit
4、上述命令執行完成後,執行mingw32-make,執行的時間比較長,我晚上跑的,睡一覺起來就好了。發現有提示錯誤,暫時無視掉。
5、執行mingw32-make install,一下就好了,但也有提示錯誤。
不難看出是編譯QML庫的時候出問題了,不過因爲我還沒用到QML庫,又懶得下python,所以就不理它了,可能以後學到QML的時候再把這個補上。

這樣靜態庫就編譯完成了。


 
QT Creator配置:
1、打開QT Creator,工具——選項——構建和運行,找到QT Versions,手動添加,找到靜態版本目錄裏面的qmake.exe,起個名字Qt_5.9.0_static。
然後在構建套件裏添加,QT版本選擇剛纔建的Qt_5.9.0_static,調試器用不是None的那個。起個名字QT5.9.0_static。
2、在剛纔編譯的靜態庫目錄中修改qmake配置,我的是D:\QT5.9.0_static\mkspecs\win32-g++
該目錄下有個qmake.conf文件,是qmake生成makefile的基礎配置文件。因爲不是很瞭解哪些參數會被選上,我修改了release版肯定會用到的參數。將QMAKE_LFLAGS_RELEASE    = -Wl,-s修改爲QMAKE_LFLAGS_RELEASE    =-static -Wl,-s。
3、將靜態庫添加到環境變量:
lib = D:\QT5.9.0_static\lib
Include =D:\QT5.9.0_static\include
4、編寫代碼,選擇構建套件,然後編譯release版就行了。

靜態編譯的版本要比動態編譯的版本大,需要壓縮體積的話可以用aspack進行壓縮,壓縮率還是不錯的。