Qt for Windows:Qt 5.9.0 MinGW 靜態編譯版本(包含OpenSSL)
5月31號,Qt這一次竟然沒跳票,如約釋出了LTS的5.9
感覺這一次5.9用的人會很多,畢竟LTS,而且確實改進很大,所以這一次完整的寫一遍靜態編譯的步驟
我這裡只涉及MinGW版本的靜態編譯,包含OpenSSL,不包含MySql
我使用的是 Windows10 64bit 作業系統
直接使用我的編譯成果這個最為簡單,不需要自己編譯Qt,但是Qt等安裝路徑這些都會被定死,而且我編譯時跳過或者沒有啟用的模組將會無法使用。
安裝 Qt5.9.0 MinGW 版本
前往百度雲,下載壓縮包:
https://pan.baidu.com/s/1o8LmUy2解壓 openssl-1.0.1c_static_w32_mingw.zip 到 C:/Dev 目錄
解壓 Qt5.9.0_MinGW_static.part1.rar 到 C:/Qt 目錄
轉跳至本文的 套件配置 ,然後配置套件,接著直接使用就可以了
如果你希望自己編譯Qt,可以從這裡開始看
下載Qt
5.9開始,Qt在Windows上的安裝包合併了,只有一個版本。就是 Qt 5.9.0 for Windows (2.3 GB),安裝的時候再選擇不同的套件。下載地址如下:
官網地址(需要登入Qt賬號):
https://www.qt.io/download-open-source/#section-3exe下載地址:
http://download.qt.io/official_releases/qt/5.9/5.9.0/qt-opensource-windows-x86-5.9.0.exe
安裝Qt
- 選擇路徑

- 選擇套件

我這裡選擇了Android,是因為我要用,不需要的同學可以不選擇。
準備OpenSSL庫
我配置的是1.0.1c版本的OpenSSL,關於OpenSSL的編譯我不建議自己進行,比較麻煩。我是到這裡直接下載OpenSSL的編譯結果的:
http://www.cnblogs.com/findumars/p/6372223.html
下載後解壓OpenSSL的zip壓縮包(openssl-1.0.1c_static_w32_mingw.zip)到 C:/Dev 目錄下
安裝Perl
我選擇的是:ActivePerl-5.22.1.2201-MSWin32-x64-299574.msi
- 安裝包:
http://downloads.activestate.com/ActivePerl/releases/5.22.1.2201/ActivePerl-5.22.1.2201-MSWin32-x64-299574.msi
這個資源貌似官網已經沒了,連結直接開啟後就報錯,但是丟到迅雷裡任然可以正常下載
- 官網地址:
http://www.activestate.com/activeperl/downloadsc
- 安裝包:
安裝 Python
我選擇的是:python-3.5.1.exe
- 安裝包:
https://www.python.org/ftp/python/3.5.1/python-3.5.1.exe
- 官網地址:
https://www.python.org/downloads/
安裝好Python後,將安裝目錄新增到PATH環境變數中(安裝的時候如果選上“Add Python 3.5 to PATH”會自動新增)
檢查
執行Qt的命令列工具
輸入以下命令看看 gcc 編譯器是否配置正確
gcc -v
再輸入以下命令看看 perl 直譯器是否配置正確
perl -v
輸入以下命令看看 python 是否配置正確
python
按 Ctrl + Z 回車,可以退出 python
開啟Qt命令列工具
cd到原始碼目錄
cd C:/Qt/Qt5.9.0_MinGW/5.9/Src
配置Qt,準備編譯
我這裡跳過了一些模組,如果你需要這些模組,在自己編譯的時候可以去掉skip
configure.bat -static -release -platform win32-g++ -prefix "C:/Qt/Qt5.9.0_MinGW_static" -qt-sqlite -qt-zlib -qt-pcre -qt-libpng -qt-libjpeg -qt-freetype -opengl desktop -openssl-linked -opensource -confirm-license -make libs OPENSSL_LIBS="-llibssl -llibcrypto -lgdi32" -L C:/Dev/openssl-1.0.1c_static_w32_mingw -I C:/Dev/openssl-1.0.1c_static_w32_mingw/include -nomake tools -nomake examples -nomake tests -skip qt3d -skip qtcanvas3d -skip qtcanvas3d -skip qtdatavis3d -skip qtlocation -skip qtwayland -skip qtwebchannel -skip qtwebengine -skip qtwebsockets -skip qtwebview -skip qtwinextras檢視輸出結果
根據自己需求,檢視對應的模組是否正常Desktop OpenGL ....................... yes
OpenGL正常
OpenSSL ................................ yes
OpenSSL正常
Qt Sql ................................. yes
Sql模組正常
SQLite ................................. yes
SQLite正常
MySql .................................. no
MySql不正常,因為我沒有裝MySql開發環境,那麼編譯出來的Qt是無法正常連線到MySql的
編譯Qt
為了避免一些奇怪的問題,我使用單執行緒編譯
編譯非常慢,請至少準備幾個小時的空餘時間
如果你使用的是Win10請注意不要讓Win10的更新後的自動重啟打斷編譯,我編譯了一半的時候就差點被Win10自動重啟了
mingw32-make
安裝Qt
mingw32-make install
修改編譯配置
開啟檔案 C:/Qt/5.9.0_MinGW_static/mkspecs/win32-g++/qmake.conf
找到 QMAKE_LFLAGS_DLL
將後面都改成 -static
再加一行 QMAKE_LFLAGS
後面也改成 -static

拷貝qml檔案
因為一些我還沒了解的原因,編譯出來的Qt,在qml目錄是沒有.qml檔案,如下圖,左邊為靜態編譯版本Qt,右邊為普通的版本。qml檔案一個都沒有。所以,這些qml檔案都需要手動拷貝下。

開啟QtCreator
選擇上方工具欄中的 -> 工具 -> 選項 -> 構建和執行
在上方選項卡中選擇 Qt Versions,並且點選右側的新增
開啟qmake.exe,路徑是:C:/Qt/Qt5.9.0_MinGW_static/bin/qmake.exe

- 在上方選項卡中選擇 構建套件 ,然後配置一個新的套件,引數如下

- 建立工程,使用新配置的套件

- 左下角,切換到release模式,直接編譯

- 檢視編譯結果,執行

