有時會因為執行某些程式的需求,需要最新版本的 QT,而系統本身的套件庫並尚未更新到所需的新版本,此時就需要去抓最新版本的 QT 回來,自行編譯來用。
目前 QT 最新版本已到 6.10,以下為依據 QT 官方網站提供的說明(網址:https://wiki.qt.io/Building_Qt_6_from_Git)做參考,來進行抓取原始碼與編譯。
- 安裝編譯時會用到的工具程式(套件):
- 下載 Qt6 原始碼
- 編譯與安裝
- 設定環境變數
sudo apt install -y \ build-essential \ ninja-build \ python3 \ perl \ git \ libgl1-mesa-dev \ libxkbcommon-dev \ libxcb1-dev \ libxcb-render0-dev \ libxcb-shape0-dev \ libxcb-xfixes0-dev \ libxcb-glx0-dev \ libxcb-keysyms1-dev \ libxcb-image0-dev \ libxcb-icccm4-dev \ libxcb-sync-dev \ libxcb-xinerama0-dev \ libxcb-randr0-dev \ libxcb-util-dev \ libx11-dev \ libx11-xcb-dev \ libxext-dev \ libxi-dev \ libxrender-dev \ libxrandr-dev \ libfontconfig1-dev \ libfreetype6-dev \ libglib2.0-dev \ libdbus-1-dev \ zlib1g-dev \ libpng-dev \ libjpeg-dev \cmake## cmake 為必要套件, ## 但因 cmake 我自己有編譯最新版本,所以就不安裝! 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 git switch 6.10 ##切換到 6.10 版本 ##從以下連結知道目前各種版本 ## https://code.qt.io/cgit/qt/qt5.git/refs/heads perl init-repository --module-subset=default,-qtwebengine ## --module-subset=default,-qtwebengine 是關鍵,會排除即不安裝 Qt WebEngine 此子模組。 ## 若僅執行 init-repository 則會自動抓取所有子模組(這需要一些時間與空間),如果需要 Qt WebEngine 模組,請移除 -qtwebengine 選項。
cd qt6 mkdir qt6-build; cd qt6-build/ export CMAKE_GENERATOR=Ninja ../configure -prefix /usr/local/qt-6.10 \ -top-level \ -opensource -confirm-license \ -release \ -nomake tests -nomake examples \ -skip qtwebengine \ -no-warnings-are-errors \ -platform linux-g++ \ -qt-harfbuzz \ -qt-pcre \ -qt-zlib \ -qt-libpng \ -qt-libjpeg \ -no-openssl ##開始編譯,用 ninja 來取代 cmake --build . --parallel ## ninja ##安裝 sudo ninja 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