ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

跨平台编译QT5.15.10实战指南

跨平台编译QT5.15.10实战指南

Qt 5.15.10 ARM64 交叉编译环境配置与编译指南

1. 环境配置

1.1 下载 ARM64 工具链

下载 ARM64 工具链(如gcc-arm-10.2),确保包含aarch64-none-linux-gnu-g++编译器。

链接:gcc 官网下载 版本可选,建议版本 10.2。

  • 下载ARM64工具链(如gcc-arm-10.2),确保包含aarch64-none-linux-gnu-g++编译器。链接:gcc官网下载版本可选 建议版本10.2直接下载地址:https://armkeil.blob.core.windows.net/developer/Files/downloads/gnu-a/10.2-2020.11/binrel/gcc-arm-10.2-2020.11-x86_64-aarch64-none-linux-gnu.tar.xzhttps://armkeil.blob.core.windows.net/developer/Files/downloads/gnu-a/10.2-2020.11/binrel/gcc-arm-10.2-2020.11-x86_64-aarch64-none-linux-gnu.tar.xz

1.2 主机环境

主机环境为 x86_64 Linux 系统(Ubuntu 22.04),并安装基础开发工具(如makegccg++)。

可能需要安装的依赖:

sudo apt update sudo apt install -y build-essential git python3 libgl1-mesa-dev \ libxkbcommon-dev libxcb-xinerama0-dev libxcb-icccm4-dev \ libxcb-image0-dev libxcb-keysyms1-dev libxcb-render-util0-dev \ libxcb-xkb-dev libxkbcommon-x11-dev flex bison gperf \ libssl-dev ninja-build ruby perl python3-pip \ libfontconfig1-dev libfreetype6-dev libx11-dev \ libxext-dev libxfixes-dev libxi-dev libxrender-dev \ libxcb1-dev libx11-xcb-dev libxcb-glx0-dev

1.3 解压工具链

解压 GCC 工具链到你的存储路径;我的路径为:

she@she-virtual-machine:~/arm-toolchain/gcc-arm-10.2$ pwd /home/she/arm-toolchain/gcc-arm-10.2

1.4 获取 Qt 源码

从QT官方存档下载qt-everywhere-src-5.15.10.tar.xz。或者我的上传:

解压缩源码到你的存储路径,我的路径为桌面下:

~/Desktop/qt-everywhere-opensource-src-5.15.10/qt-everywhere-src-5.15.10$ pwd /home/she/Desktop/qt-everywhere-opensource-src-5.15.10/qt-everywhere-src-5.15.10

1.5 设置环境变量

export SYSROOT="/path/to/gcc-arm-10.2/aarch64-none-linux-gnu/libc" export LDFLAGS="-Wl,-rpath-link=$SYSROOT/lib -Wl,-rpath-link=$SYSROOT/usr/lib" export CC="gcc" export CXX="g++"

我的路径和指令为:

export SYSROOT="/home/she/arm-toolchain/gcc-arm-10.2/aarch64-none-linux-gnu/libc" export LDFLAGS="-Wl,-rpath-link=$SYSROOT/lib -Wl,-rpath-link=$SYSROOT/usr/lib" export CC="gcc" export CXX="g++"

2. 编译配置

2.1 修改 qmake.conf

编辑文件qtbase/mkspecs/linux-aarch64-gnu-g++/qmake.conf,指定交叉编译工具链路径。

文件地址:

/home/she/Desktop/qt-everywhere-opensource-src-5.15.10/qt-everywhere-src-5.15.10/qtbase/mkspecs/linux-aarch64-gnu-g++

内容改为:

# # qmake configuration for building with aarch64-none-linux-gnu-g++ # MAKEFILE_GENERATOR = UNIX CONFIG += incremental QMAKE_INCREMENTAL_STYLE = sublib include(../common/linux.conf) include(../common/gcc-base-unix.conf) include(../common/g++-unix.conf) # modifications to g++.conf QMAKE_CC = aarch64-none-linux-gnu-gcc QMAKE_CXX = aarch64-none-linux-gnu-g++ QMAKE_LINK = aarch64-none-linux-gnu-g++ QMAKE_LINK_SHLIB = aarch64-none-linux-gnu-g++ # modifications to linux.conf QMAKE_AR = aarch64-none-linux-gnu-ar cqs QMAKE_OBJCOPY = aarch64-none-linux-gnu-objcopy QMAKE_NM = aarch64-none-linux-gnu-nm -P QMAKE_STRIP = aarch64-none-linux-gnu-strip load(qt_config)

2.2 创建构建目录并生成 Makefile

在源码源文件目录下生成一个build文件夹:

mkdir build-qt5.15.10-arm64 cd build-qt5.15.10-arm64

然后使用以下命令生成 Makefile:

she@she-virtual-machine:~/Desktop/qt-everywhere-opensource-src-5.15.10/build-qt5.15.10-arm64$ ../qt-everywhere-src-5.15.10/configure \ -prefix /opt/qt5.15.10-arm64 \ -sysroot /home/she/arm-toolchain/gcc-arm-10.2/aarch64-none-linux-gnu/libc \ -xplatform linux-aarch64-gnu-g++ \ -platform linux-g++-64 \ -opensource -confirm-license \ -release \ -c++std c++14 \ -qt-zlib \ -qt-libpng \ -qt-libjpeg \ -no-openssl \ -nomake examples \ -nomake tests \ -no-pch \ -no-opengl \ -skip qtwayland \ -skip qtwebengine

3. 编译与安装

3.1 编译

运行make -j$(nproc)启用多线程编译。

若出现依赖错误,检查$SYSROOT中是否缺失库文件(如libz.so)。

3.2 安装

执行make install,生成的文件将位于sysroot:/opt/qt5.15.10-arm64


4. 验证与调试

  • 验证sysroot/opt/qt5.15.10-arm64/bin/qmake是否能正确生成 ARM64 目标平台的 Makefile。

    注意:这里的qmake是 x86 文件,用于在 x86 上生成 Makefile,使用这个 Makefile 去交叉编译出 ARM64 的程序。

  • 库路径错误:通过LD_LIBRARY_PATH显式指定$SYSROOT/usr/lib

  • 头文件缺失:检查configure输出是否提示缺失依赖(如 OpenSSL)。


5. 附件

编译完成,安装好的gcc工具链:gcc-10.2-ARM64-QT5.15.10

目录结构
tree -L 3 /home/she/arm-toolchain/gcc-arm-10.2/aarch64-none-linux-gnu/libc/ /home/she/arm-toolchain/gcc-arm-10.2/aarch64-none-linux-gnu/libc/ ├── opt │ ├── qt5.15.10-arm64 │ │ ├── bin │ │ ├── doc │ │ ├── include │ │ ├── lib │ │ ├── mkspecs │ │ ├── plugins │ │ ├── qml │ │ └── translations │ └── qt5.15.10-arm64-minimal │ ├── bin │ ├── doc │ ├── include │ ├── lib │ ├── mkspecs │ └── plugins
返回列表