news 2026/5/2 5:02:25

保姆级教程:在Ubuntu 20.04上为Qt 5.12.8配置aarch64交叉编译工具链(含gcc-arm-8.3)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
保姆级教程:在Ubuntu 20.04上为Qt 5.12.8配置aarch64交叉编译工具链(含gcc-arm-8.3)

ARM64跨平台开发实战:Ubuntu 20.04下Qt 5.12.8交叉编译环境深度配置指南

当我们需要将x86平台开发的Qt应用程序移植到国产ARM64架构设备时,交叉编译环境的搭建往往成为第一道技术门槛。本文将手把手带你完成从工具链配置到Qt源码编译的全过程,特别针对国产麒麟系统等ARM64平台提供可落地的解决方案。

1. 环境准备与工具链部署

1.1 系统基础环境检查

在开始之前,建议先确认开发机的系统架构和版本信息。打开终端执行以下命令:

# 查看系统架构 uname -m # 查看系统版本 lsb_release -a # 查看CPU信息 lscpu

对于Ubuntu 20.04 x86_64系统,你应当看到类似这样的输出:

x86_64 Distributor ID: Ubuntu Description: Ubuntu 20.04.3 LTS Release: 20.04 Codename: focal

1.2 ARM64交叉编译器安装

我们推荐使用gcc-arm-8.3版本工具链,这是经过验证与Qt 5.12.8兼容性较好的版本。以下是具体安装步骤:

  1. 下载工具链

    wget https://developer.arm.com/-/media/Files/downloads/gnu-a/8.3-2019.03/binrel/gcc-arm-8.3-2019.03-x86_64-aarch64-linux-gnu.tar.xz
  2. 解压并安装

    tar -xvf gcc-arm-8.3-2019.03-x86_64-aarch64-linux-gnu.tar.xz sudo mv gcc-arm-8.3-2019.03-x86_64-aarch64-linux-gnu /opt
  3. 配置环境变量: 编辑~/.bashrc文件,在末尾添加:

    export PATH=$PATH:/opt/gcc-arm-8.3-2019.03-x86_64-aarch64-linux-gnu/bin

    然后执行:

    source ~/.bashrc
  4. 验证安装

    aarch64-linux-gnu-gcc -v

    正确安装后会显示版本信息,包含"gcc version 8.3.0"等字样。

注意:如果遇到权限问题,建议使用sudo命令执行相关操作。同时确保系统已安装基础编译工具:

sudo apt install build-essential cmake

2. Qt源码编译配置

2.1 获取Qt 5.12.8源码

从Qt官方镜像下载源码包:

wget https://download.qt.io/archive/qt/5.12/5.12.8/single/qt-everywhere-src-5.12.8.tar.xz

解压源码:

tar -xvf qt-everywhere-src-5.12.8.tar.xz

2.2 配置编译环境

创建编译目录和安装目录:

mkdir qt5-build qt5-arm64

修改关键配置文件qtbase/mkspecs/linux-aarch64-gnu-g++/qmake.conf,确保包含以下内容:

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-linux-gnu-gcc QMAKE_CXX = aarch64-linux-gnu-g++ QMAKE_LINK = aarch64-linux-gnu-g++ QMAKE_LINK_SHLIB = aarch64-linux-gnu-g++ # modifications to linux.conf QMAKE_AR = aarch64-linux-gnu-ar cqs QMAKE_OBJCOPY = aarch64-linux-gnu-objcopy QMAKE_NM = aarch64-linux-gnu-nm -P QMAKE_STRIP = aarch64-linux-gnu-strip

2.3 编译配置脚本

创建configure.sh脚本:

#!/bin/bash ../qt-everywhere-src-5.12.8/configure \ -prefix $(pwd)/qt5-arm64 \ -confirm-license \ -opensource \ -make libs \ -xplatform linux-aarch64-gnu-g++ \ -no-opengl \ -skip qtdeclarative \ -nomake examples \ -nomake tests

给脚本执行权限并运行:

chmod +x configure.sh ./configure.sh

3. Qt源码编译与安装

3.1 并行编译优化

使用多核编译加速过程:

make -j$(nproc) 2>&1 | tee build.log

编译完成后安装:

make install

3.2 验证编译结果

检查生成的库文件架构:

readelf -h qt5-arm64/lib/libQt5Core.so.5

应显示"Machine: AArch64"。

4. Qt Creator环境配置

4.1 编译器配置

在Qt Creator中:

  1. 进入"工具"→"选项"→"Kits"
  2. 添加C++编译器,路径指向:
    /opt/gcc-arm-8.3-2019.03-x86_64-aarch64-linux-gnu/bin/aarch64-linux-gnu-g++

4.2 Qt版本配置

  1. 添加新Qt版本,qmake路径选择:
    /path/to/qt5-arm64/bin/qmake

4.3 构建套件配置

创建新Kit,选择:

  • 设备类型:通用Linux设备
  • 编译器:刚配置的ARM64交叉编译器
  • Qt版本:刚配置的Qt 5.12.8 ARM64版本

5. 常见问题解决方案

5.1 编译过程中出现的典型错误

  1. 找不到交叉编译器

    aarch64-linux-gnu-g++: not found

    解决方案

    • 检查PATH环境变量是否包含工具链bin目录
    • 确认qmake.conf中编译器路径是否正确
  2. 链接库缺失

    cannot find -lGL

    解决方案

    • 安装ARM64架构的库文件:
      sudo apt install libgl1-mesa-dev:arm64

5.2 性能优化建议

  • 使用-j$(nproc)参数充分利用多核CPU
  • 配置ccache加速后续编译:
    sudo apt install ccache export CCACHE_DIR="/path/to/ccache" export CC="ccache gcc" export CXX="ccache g++"

6. 项目移植与验证

6.1 创建测试项目

在Qt Creator中使用新配置的Kit创建简单Qt Widgets项目,构建后检查生成的可执行文件:

file your_project

应显示"ELF 64-bit LSB shared object, ARM aarch64"。

6.2 部署到目标设备

将编译好的可执行文件和依赖库拷贝到ARM64设备:

scp your_project user@arm-device:/path/to/deploy

在目标设备上运行前,确保已安装必要的运行时库:

sudo apt install libqt5core5a libqt5gui5 libqt5widgets5

7. 高级配置技巧

7.1 静态编译选项

如需生成静态链接的可执行文件,在configure时添加:

-static -no-pch

7.2 自定义模块选择

通过以下参数控制编译模块:

-skip qtwebengine -skip qtmultimedia

7.3 交叉编译调试支持

配置gdb调试工具:

sudo apt install gdb-multiarch

在Qt Creator中配置调试器路径为/usr/bin/gdb-multiarch

经过以上步骤,你应该已经成功搭建了完整的ARM64交叉编译环境。在实际项目开发中,建议将编译配置脚本纳入版本控制系统,方便团队共享和持续集成。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/2 4:57:26

为 Claude Code 配置 Taotoken 作为后端 API 提供方

为 Claude Code 配置 Taotoken 作为后端 API 提供方 1. 准备工作 在开始配置之前,请确保您已经拥有以下两项信息:有效的 Taotoken API Key 和需要使用的模型 ID。这两项信息可以在 Taotoken 控制台的相应页面获取。API Key 用于身份验证,而…

作者头像 李华
网站建设 2026/5/2 4:53:33

为AI智能体构建外部记忆库:engram开源项目全解析

1. 项目概述:为AI智能体构建专属记忆库在AI编程助手和智能体日益普及的今天,一个核心痛点逐渐浮现:它们缺乏“记忆”。每次对话都像初次见面,你需要反复解释项目背景、代码结构和个人偏好。这就像和一个永远记不住事的搭档合作&am…

作者头像 李华
网站建设 2026/5/2 4:47:35

小米CyberDog四足机器人硬件架构与开发实战

1. 小米CyberDog四足机器人深度解析作为一名长期关注消费级机器人发展的从业者,我最近上手体验了小米CyberDog这款搭载NVIDIA Jetson Xavier NX的"机器狗"。相比市面上几百美元的玩具级产品,这款售价约1540美元的设备确实带来了不少惊喜。它不…

作者头像 李华
网站建设 2026/5/2 4:41:23

HTML5在汽车HMI开发中的核心技术优势与应用

1. HTML5为何成为HMI技术的首选在汽车信息娱乐系统、工业控制面板等嵌入式领域,人机界面(HMI)技术经历了从专用框架到开放标准的演变。十年前,这类系统通常采用QT、GTK等传统图形框架,或是厂商自研的封闭解决方案。这些…

作者头像 李华