銀河麒麟(Kylin) - V10 SP1桌面操作系統ARM64編譯QT-5.15.12版本
原因
測試Kylin-Desktop-V10-SP1-General-Release-2303-arm64系統下,編譯QT-5.15.12版本已做測試。
測試環境
測試板配置
型號:LM-D2000-NONE-1w-V01-pc_A2150
CPU:飛騰D2000/8 (2.3GHz)
內存:32G
硬盤:256G SSD
系統:Desktop-V10-SP1-General-Release-2303
平臺架構:ARM
準備工作
-
去QT官網下載QT-5.15.12源碼
-
確保系統的gcc,g++, python, perl等符合Qt安裝要求,具體請參見Qt源碼內的README文檔
編譯
- 編譯安裝QT
進入qt-everywhere-src-5.15.12目錄執行以下命令:
sudo ./configure -prefix /opt/qt5.15.12 -xcb -nomake tests -nomake examples
make -j8 #-j8為編譯時多核優化,視物理機而定
make install #然后執行安裝
編譯中途報錯缺少庫依賴,自行安裝缺少的庫。
sudo apt-get install '^libxcb.*-dev' libx11-xcb-dev libglu1-mesa-dev libxrender-dev libxi-dev libxkbcommon-dev libxkbcommon-x11-dev
sudo apt-get install gperf bison flex host pkg-config
問題
我在編譯過程中報錯error: [Makefile.gn_run:1169:run_ninja] 錯誤 1
ninja: build stopped: subcommand failed.
make[4]: *** [Makefile.gn_run:1169:run_ninja] 錯誤 1
make[4]: 離開目錄“/home/zhang/qt-everywhere-src-5.15.12/qtwebengine/src/core”
make[3]: *** [Makefile:82:sub-gn_run-pro-make_first] 錯誤 2
make[3]: 離開目錄“/home/zhang/qt-everywhere-src-5.15.12/qtwebengine/src/core”
make[2]: *** [Makefile:80:sub-core-make_first] 錯誤 2
make[2]: 離開目錄“/home/zhang/qt-everywhere-src-5.15.12/qtwebengine/src”
make[1]: *** [Makefile:49:sub-src-make_first] 錯誤 2
make[1]: 離開目錄“/home/zhang/qt-everywhere-src-5.15.12/qtwebengine”
make: *** [Makefile:1088:module-qtwebengine-make_first] 錯誤 2
QtWebEngine編譯失敗的問題,錯誤信息還是關于ninja停止構建
- 安裝缺失依賴庫:
sudo apt install \libnss3-dev libdrm-dev libxcomposite-dev libxcursor-dev \libxi-dev libxtst-dev libxkbfile-dev libxkbcommon-dev \libfontconfig1-dev libdbus-1-dev libevent-dev libwebp-dev \libicu-dev libxslt1-dev libxml2-dev libjpeg-dev libpng-dev \libssl-dev libopus-dev libminizip-dev libsnappy-dev \libjsoncpp-dev libre2-dev protobuf-compiler ninja-build
- 修復 Python 環境
確保默認 python 指向 Python 3.6+:
sudo ln -sf /usr/bin/python3 /usr/bin/python
- 清理并重新配置 Qt
cd /home/zhang/qt-everywhere-src-5.15.12
make distclean
rm -rf config.cache
# 重新配置
./configure -prefix /opt/qt5.15.12 -xcb -nomake tests -nomake examples
- 如果仍失敗
檢查 config.log
+ /usr/bin/pkg-config --exists --silence-errors poppler-cpp
pkg-config did not find package.=> source produced no result.
test config.qtwebengine_core.libraries.webengine-poppler-cpp FAILED
loaded result for library config.qtwebengine_core.libraries.webengine-pulseaudio
Trying source 0 (type pkgConfig) of library webengine-pulseaudio ...
+ /usr/bin/pkg-config --exists --silence-errors libpulse '>=' 0.9.10 libpulse-mainloop-glib
pkg-config did not find package.=> source produced no result.
test config.qtwebengine_core.libraries.webengine-pulseaudio FAILED
錯誤分析:
QtWebEngine 在配置階段檢測到兩個關鍵依賴庫缺失:
- poppler-cpp(PDF 渲染支持)
- libpulse(音頻支持)
雖然這些庫 不是 QtWebEngine 的核心依賴(構建仍可繼續),但缺失會導致部分功能受限(如 PDF 預覽、音頻播放)。以下是解決方案:
安裝缺少的庫
sudo apt update
sudo apt install \libpoppler-cpp-dev \ # poppler-cpplibpulse-dev \ # libpulselibglib2.0-dev # libpulse 的依賴
安裝缺少的庫
sudo apt-get install bison build-essential gperf flex ruby python libasound2-dev libbz2-dev libcap-dev libcups2-dev libdrm-dev libegl1-mesa-dev libgcrypt* libnss3-dev libpci-dev libpulse-dev libudev-dev libxtst-dev gyp ninja-build libglu1-mesa-dev libfontconfig1-dev libx11-xcb-dev libicu-dev pulseaudio* libxkbcommon* libxcb* libthread* libgstreamer*
編譯 Qt 文檔 (QDoc)警告:(可以忽略)
警告:WARNING: QDoc will not be compiled, probably because libclang could not be located. This means that you cannot build the Qt documentation.Either ensure that llvm-config is in your PATH environment variable, or set LLVM_INSTALL_DIR to the location of your llvm installation.
On Linux systems, you may be able to install libclang by installing the libclang-dev or libclang-devel package, depending on your distribution.
On macOS, you can use Homebrew's llvm package.
On Windows, you must set LLVM_INSTALL_DIR to the installation path.
這個警告表明你的系統缺少編譯 Qt 文檔 (QDoc) 所需的依賴項 - libclang。QDoc 是 Qt 的文檔生成工具,它依賴于 LLVM/Clang 來解析 C++ 代碼。
- 安裝 libclang 開發包:
sudo apt-get install libclang-dev
- 確保 llvm-config 在 PATH 中:
which llvm-config
- 如果沒有,可能需要安裝 llvm:
sudo apt-get install llvm
- 安裝后驗證 llvm-config 是否可用:
llvm-config --version
解決編譯Qt時Qt 文檔 (QDoc) 警告
測試
完成
編譯成功:銀河麒麟(Kylin) - V10 SP1桌面操作系統ARM64編譯QT-5.15.12版本
編譯成功:銀河麒麟(Kylin) - V10 SP1桌面操作系統ARM64編譯QT-5.15.13版本
編譯成功:銀河麒麟(Kylin) - V10 SP1桌面操作系統ARM64編譯QT-5.15.14版本
編譯成功:銀河麒麟(Kylin) - V10 SP1桌面操作系統ARM64編譯QT-5.15.15版本
編譯成功:銀河麒麟(Kylin) - V10 SP1桌面操作系統ARM64編譯QT-5.15.16版本