編譯 QT(不含 Qt6Webengine)紀錄

有時會因為執行某些程式的需求,需要最新版本的 QT,而系統本身的套件庫並尚未更新到所需的新版本,此時就需要去抓最新版本的 QT 回來,自行編譯來用。

目前 QT 最新版本已到 6.10,以下為依據 QT 官方網站提供的說明(網址:https://wiki.qt.io/Building_Qt_6_from_Git)做參考,來進行抓取原始碼與編譯。

  1. 安裝編譯時會用到的工具程式(套件):
  2. 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
    
    
  3. 下載 Qt6 原始碼
  4. 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 選項。
    
    
  5. 編譯與安裝
  6. 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 . 
    
    
  7. 設定環境變數
  8. 將以下新增到 ~/.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
    

參考資源

  1. Building Qt 6 from Git: https://wiki.qt.io/Building_Qt_6_from_Git

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

*