有時會因為執行某些程式的需求,需要最新版本的 QT,而系統本身的套件庫並尚未更新到所需的新版本,此時就需要去抓最新版本的 QT 回來,自行編譯來用。
目前 QT 最新版本已到 6.10.1 ,以下為依據 QT 官方網站提供的說明(網址:https://wiki.qt.io/Building_Qt_6_from_Git)做參考,來進行抓取原始碼與編譯。
- 安裝編譯時會用到的工具程式(套件):
- 下載 Qt6 原始碼
- 建立 build 資料夾並設定編譯參數
- -prefix: 指定安裝位置
- -opensource -confirm-license: 使用 LGPL 開源授權
- -nomake tests/ -nomake examples: 加快編譯速度
- -skip qtwebengine: 如果不需要 WebEngine,可以跳過這個模組
- 開始編譯
- 安裝 Qt6,
- 設定環境變數
sudo apt install -y \ build-essential ninja-build perl python3 git \ libgl1-mesa-dev libx11-dev libxext-dev libxfixes-dev \ libxi-dev libxrender-dev libxcb1-dev libxcb-glx0-dev \ libxcb-keysyms1-dev libxcb-image0-dev libxcb-shm0-dev \ libxcb-icccm4-dev libxcb-sync-dev libxcb-xfixes0-dev \ libxcb-shape0-dev libxcb-randr0-dev libxcb-render-util0-dev \ libxcb-util-dev libxcb-xinerama0-dev libxkbcommon-dev \ libfontconfig1-dev libfreetype6-dev libssl-dev \ libzstd-dev libdbus-1-dev \ bison flex gperf python3 pkg-config \ libdrm-dev libnss3-dev libxss-dev libxtst-dev \ libxcomposite-dev libxcursor-dev libxdamage-dev \ libgbm-dev libasound2-dev libpci-dev libpulse-dev libudev-dev \ libxkbfile-dev libxshmfence-dev \ lld curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash - sudo apt-get install -y nodejs
$ git clone https://code.qt.io/qt/qt5.git qt6 $ cd qt6 $ perl init-repository --module-subset=default,-qtwebengine
補充說明
若僅執行 init-repository 則會自動抓取所有子模組(這需要一些時間與空間),如果需要 Qt WebEngine 模組,請移除 -qtwebengine 選項。
$ export CXX=g++ $ export CC=gcc $ export LD=lld $ ulimit -n 65536 $ ulimit -s 8192 $ ulimit -v unlimited $ ulimit -f unlimited $ cmake -S . -B build \ -DCMAKE_INSTALL_PREFIX=/usr/local/qt-6.10.1 \ -DCMAKE_BUILD_TYPE=Release \ -DFEATURE_developer_build=OFF \ -DQT_BUILD_EXAMPLES=OFF \ -DQT_BUILD_TESTS=OFF \ -DQT_FEATURE_webengine=ON \ -DCMAKE_LINKER=lld \ -DCMAKE_EXE_LINKER_FLAGS="-fuse-ld=lld" \ -DCMAKE_SHARED_LINKER_FLAGS="-fuse-ld=lld" \ -DCMAKE_CXX_FLAGS="-fuse-ld=lld" mkdir build && cd build $ ../configure -prefix=/usr/local/qt6.10.1 \ -opensource \ -confirm-license \ -nomake tests -nomake examples \ -release \ -DQT_BUILD_WEBENGINE=ON \ -DCMAKE_LINKER=lld \ -DCMAKE_EXE_LINKER_FLAGS="-fuse-ld=lld" \ -DCMAKE_SHARED_LINKER_FLAGS="-fuse-ld=lld"\ -DCMAKE_CXX_FLAGS="-fuse-ld=lld" \
參數說明:
可以從這裡知道目前QT最新版本:https://code.qt.io/cgit/qt/qt5.git/refs/heads
$ cmake --build . \ --parallel 8 (啟動多執行緒編譯,通常看 CPU 核心數量來決定)
把 Qt 安裝到 -prefix 所指定的資料夾,此時要注意是否有寫入該資料夾權限。
$ cmake --install .
將以下新增到 ~/.bashrc 或 ~/.zshrc:
export QT_HOME=/usr/local/qt6 export PATH=$QT_HOME/bin:$PATH export LD_LIBRARY_PATH=$QT_HOME/lib:$LD_LIBRARY_PATH export QT_PLUGIN_PATH=$QT_HOME/plugins export QML2_IMPORT_PATH=$QT_HOME/qml
參考資源
- Building Qt 6 from Git: https://wiki.qt.io/Building_Qt_6_from_Git