QT 5.15.1 Mingw static 64bits 靜態編譯

QT 5.15.5 Mingw static 64bits 靜態編譯教學。

如果只是想要使用 static 版的 QT 我個人不推薦自己編譯,而是使用 MSYS2 安裝 QT static。

如果想要在其他環境執行動態編譯的 QT 執行檔就需要在那個環境中安裝 QT 依賴的函示庫或將執行檔用到的函示庫(dll)一起打包,編譯完後還需要自己把這些函示庫收集起來非常麻煩(不過自從有 windeployqt 就沒有這種困擾了)。靜態編譯會在編譯時將要用到的函式一起打包到執行檔中,在執行時就不會老是跳出找不到xxx.dll的 Error。以下講解如何在 Windows 自行編譯 QT 5.15.1 靜態編譯版本。

下載項目

MSYS2 開發環境搭建

MSYS2 集成了許多程式與函式庫,使用pacman套件管理系統就可以輕鬆設好開發環境,當然也包括了 QT 編譯所需要的gcc等工具。

這裡只做步驟的講解,較詳細的 MSYS2 的講解可以參考 MSYS2 簡單教學

MSYS2 安裝

到 官網頁面 下載最新版本安裝檔

官網下載

安裝過程不用特別設定,一直下一步就行了。

當然也可以自己指定安裝位置

選擇安裝目錄

安裝完成後目錄結構如下圖所示

MSYS2 的安裝目錄情形

msys2 mingw32 mingw64 是用來快速開啟 MSYS2 環境的命令視窗

mingw32: 32bits 的開發環境

mingw64: 64bits 的開發環境

MSYS2 套件安裝

執行 msys2.exe

連點 msys2.exe 兩下開啟應用程式

更新 MSYS2

在視窗中輸入

pacman -Syu

重新啟動程式

在步驟2執行結束後會在最尾端看到如上圖的畫面,這段的意思是需要重新啟動來完成更新作業。

輸入 y 讓MSYS2 自己關閉後,再重新執行(自己關閉視窗重新執行也可以)

更新其他套件包

pacman -Syu

安裝編譯所需套件

pacman -S --needed mingw-w64-i686-toolchain mingw-w64-x86_64-toolchain base-devel

執行後會看到 輸入某個選擇(預設=全部選定):

直接按Enter即可 (甚麼都不輸入=預設=全部安裝)

如此一來 QT 的編譯環境就搭建好囉

編譯QT

下載原始碼(QT5.15.1)

只要你的解壓縮程式支援,選擇 .zip 或 .tar.xz 格式下載都可以。

解壓縮原始碼

使用你的解壓縮程式將剛剛下載下來的原始碼解壓縮

執行 mingw64.exe

我們接下來要編譯64位元的 QT 需要使用 MINGW64,如果是要編譯32位元則需要開啟 MINGW32

切換目錄到 QT 資料夾

cd /c/QT/qt-everywhere-src-5.15.1

輸入 configure 命令 設定 QT 編譯選項

./configure -confirm-license -opensource -release -static -optimize-size -platform win32-g++ -prefix "/c/QT/Qt5.15.1_MinGW64_static" -qt-sqlite -static-runtime -qt-pcre -qt-zlib -qt-freetype -qt-libpng -qt-libjpeg -opengl desktop -skip qtwebengine -skip qtlocation -skip qttools -no-feature-d3d12 -no-wmf -nomake examples -nomake tools OPENSSL_LIBS="-lssl -lcrypto -lcrypt32 -lgdi32 -lws2_32" -openssl-linked

這個步驟會先生成 qmake,然後檢查你的電腦環境

QT環境檢查結果

跑完後如果沒有出現 Error ,並且確定你要編譯的選項為 yes 後就可以繼續下一步

需要注意的事項:

  • -prefix “/c/QT/Qt5.15.1_MinGW64_static”: prefix 後面的路徑請改為自己想要安裝的路徑
  • 路徑的寫法: 假如你想要表達 D:/dir1/dir2 ,應該改為 /d/dir1/dir2
  • qtlocation 不支援靜態編譯,雖然可以編譯QT時可以成功,但是編譯執行 example 的程式卻會報錯

開始編譯(這個過程很久,依 CPU 等級而定)

make -jn

( make 或是 mingw32-make 都可以)

指令中的 n 為線程數

你想用單線程跑 make
你想用2線程跑 make -j2
你想用4線程跑 make -j4
…

以此類推

要用多少線程依情況而定,你想要讓他全力跑,一般會設定你 CPU 的線程數。如果想要在編譯期間做其他事,則選擇把線程數設定少一點。

如果編譯跑完的結尾有 Error 的字樣

Error 示意圖

代表有地方沒有編譯成功,可能的原因很多產生的問題也千奇百怪,只能靠自己一步步回推看哪裡出了問題。

7.安裝

make install -jn

這裡的 n 和上一個步驟一樣是指線程數,依照自己的情況進行設定

執行完後就可以在剛剛設定的安裝目錄看到編譯完成的QT了

QT Creator 設定

打開設定面板 工具 > 選項

開啟設定面板

新增編譯器

左邊欄位點選 Kits,頁籤選擇 Compilers

編譯器頁籤

右邊下選單 新增 > GCC > C

名稱: 可自訂

編譯器路徑: 設定為 mingw64/bin 裡面的 gcc.exe

新增 gcc compiler

右邊下選單 新增 > GCC > C++

名稱: 可自訂

編譯器路徑: 設定為b mingw64/bin 裡面的 g++.exe

新增 g++ compiler

設定好記得按右下角的 應用 (不然等等在其他頁面會找不到以新增的設定)

設定QT位置

頁籤選擇 QT Versions,點選右邊 新增 按鈕

選擇 qmake.exe 位置(會在 你編譯設定的安裝目錄/bin/qmake.exe)

版本名稱: 可自訂

設定 qmake

設定好記得按右下角的 應用 (不然等等會找不到)

設定 QT 配置

頁籤選擇 Kits,點選右邊 Add 按鈕

名稱: 可自訂

Compiler C: 選擇剛剛新增的 C 編譯器

Compiler C++: 選擇剛剛新增的 C++ 編譯器

Debugger: 因為我們沒有編譯 Debug 版本,選擇 None 就好

Qt Version: 選擇剛剛添加的 QT 版本

添加 QT Kit

全部設定好後記得按下確定儲存喔

Built with Hugo
Theme Stack designed by Jimmy