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