一、Qt 交叉編譯詳細配置
1. 準備工作
1.1 安裝交叉編譯工具鏈
# 例如安裝ARM工具鏈(Ubuntu/Debian)
sudo apt-get install gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf# 或者64位ARM
sudo apt-get install gcc-aarch64-linux-gnu g++-aarch64-linux-gnu
1.2 準備目標系統根文件系統(sysroot)
# 創建sysroot目錄結構
mkdir -p /opt/sysroot/{usr/lib,usr/include,lib}# 從目標設備復制庫文件(假設通過ssh連接)
rsync -avz root@target-device:/lib /opt/sysroot/
rsync -avz root@target-device:/usr/lib /opt/sysroot/usr/
rsync -avz root@target-device:/usr/include /opt/sysroot/usr/
2. Qt 源碼配置
2.1 下載Qt源碼
wget https://download.qt.io/official_releases/qt/5.15/5.15.2/single/qt-everywhere-src-5.15.2.tar.xz
tar xf qt-everywhere-src-5.15.2.tar.xz
cd qt-everywhere-src-5.15.2
2.2 創建自定義mkspec文件(可選)
如果現有mkspec不滿足需求,可以創建自定義配置:
cp -r qtbase/mkspecs/linux-arm-gnueabi-g++ qtbase/mkspecs/linux-custom
編輯qtbase/mkspecs/linux-custom/qmake.conf
:
MAKEFILE_GENERATOR = UNIX
CONFIG += incremental
QMAKE_INCREMENTAL_STYLE = sublibinclude(../common/linux.conf)
include(../common/gcc-base-unix.conf)
include(../common/g++-unix.conf)# 修改以下內容匹配你的工具鏈
QMAKE_CC = arm-linux-gnueabihf-gcc
QMAKE_CXX = arm-linux-gnueabihf-g++
QMAKE_LINK = arm-linux-gnueabihf-g++
QMAKE_LINK_SHLIB = arm-linux-gnueabihf-g++# 目標平臺設置
QMAKE_AR = arm-linux-gnueabihf-ar cqs
QMAKE_OBJCOPY = arm-linux-gnueabihf-objcopy
QMAKE_NM = arm-linux-gnueabihf-nm -P
QMAKE_STRIP = arm-linux-gnueabihf-strip# 鏈接器標志
QMAKE_LFLAGS += -Wl,-rpath-link,/opt/sysroot/usr/lib
3. 詳細配置命令
3.1 基本交叉編譯配置
./configure \-prefix /opt/qt5-arm \-xplatform linux-custom \ # 使用自定義mkspec-sysroot /opt/sysroot \-confirm-license \-opensource \-release \-no-opengl \-no-xcb \-no-eglfs \-no-pch \-nomake examples \-nomake tests \-skip qtdoc \-skip qtquickcontrols2 \-skip qtwebengine \-v
3.2 高級配置選項
圖形后端選擇
# 使用FBDEV(幀緩沖)
-opengl es2 -linuxfb# 或使用Wayland
-feature-wayland -no-xcb
庫依賴配置
# 使用系統庫(需在sysroot中存在)
-system-zlib \
-system-libjpeg \
-system-libpng \
-system-pcre \
-system-freetype \
-system-harfbuzz# 或使用Qt內置庫
-qt-zlib \
-qt-libpng \
-qt-libjpeg \
-qt-pcre \
-qt-freetype \
-qt-harfbuzz
功能模塊控制
# 啟用/禁用特定模塊
-qt-sqlite \
-no-openssl \
-no-dbus \
-no-icu \
-no-glib \
-no-cups \
-no-iconv \
-no-tslib
4. 環境變量設置
建議在配置前設置這些環境變量:
export PATH=/path/to/toolchain/bin:$PATH
export CROSS_COMPILE=arm-linux-gnueabihf-
export CC=${CROSS_COMPILE}gcc
export CXX=${CROSS_COMPILE}g++
export AR=${CROSS_COMPILE}ar
export LD=${CROSS_COMPILE}ld
export STRIP=${CROSS_COMPILE}strip
export RANLIB=${CROSS_COMPILE}ranlib# 鏈接器標志
export LDFLAGS="-Wl,-rpath-link,/opt/sysroot/usr/lib -Wl,-rpath-