在嵌入式开发、物联网设备调试或ARM架构服务器运维中,经常需要在x86架构的Ubuntu系统上编译生成ARM平台可执行的程序,ARM交叉编译器(如GCC-ARM工具链)就成了必不可少的工具,本文将详细介绍如何在Ubuntu系统中下载并安装ARM交叉编译器,涵盖工具链选择、安装步骤、验证方法及常见问题解决,帮助开发者快速搭建跨平台编译环境。
什么是ARM交叉编译器?
交叉编译器是指在一个计算平台(如x86架构的Ubuntu主机)上生成另一个不同架构平台(如ARM架构的嵌入式设备)可执行代码的编译工具,与普通编译器(如Ubuntu自带的x86-64 GCC)不同,交叉编译器需要同时支持主机架构和目标架构的指令集转换,确保生成的程序能在ARM设备上正确运行。
常见的ARM交叉编译器工具链包括:

- GCC-ARM Embedded(官方推荐,支持ARMv6、ARMv7、ARMv8等架构,适用于32位和64位ARM设备);
- Linaro GCC(基于Linux内核优化的ARM工具链,性能更高,适合对编译效率要求高的场景);
- 厂商定制工具链(如树莓派官方提供的硬浮点工具链,针对特定硬件优化)。
本文以最常用的GCC-ARM Embedded为例,介绍其在Ubuntu中的安装流程。
安装前的准备工作
在开始安装前,确保你的Ubuntu系统满足以下基本条件:
- 系统版本:推荐使用Ubuntu 18.04 LTS、20.04 LTS或22.04 LTS(长期支持版本,软件源稳定);
- 架构:仅支持x86_64(64位Ubuntu),32位系统已逐渐被淘汰,建议升级;
- 网络连接:安装工具链需要从软件源或官方仓库下载文件,确保网络畅通;
- 权限:安装过程需要管理员权限(使用
sudo命令)。
通过APT安装ARM交叉编译器(推荐方式)
Ubuntu的官方软件源中已预置了部分ARM交叉编译器,通过apt包管理器安装是最简单、最稳定的方式,且能自动处理依赖关系。
更新软件源列表
更新Ubuntu的软件源列表,确保获取到最新的包信息:
sudo apt update
安装32位ARM工具链(ARMv7-A,硬浮点)
若需编译运行在ARMv7架构(如树莓派2/3、Cortex-A7/A9等)的32位程序,推荐安装支持硬浮点的工具链:
sudo apt install gcc-arm-linux-gnueabihf
该工具链包含arm-linux-gnueabihf-gcc(编译器)、arm-linux-gnueabihf-g++(C++编译器)、arm-linux-gnueabihf-gdb(调试器)等核心组件,支持ARMv7-A和ARMv6-Z(需额外配置)架构。
安装64位ARM工具链(ARMv8-A,AArch64)
若需编译运行在ARMv64架构(如树莓派4/5、Cortex-A53/A72等)的64位程序,安装AArch64工具链:
sudo apt install gcc-aarch64-linux-gnu
该工具链提供aarch64-linux-gnu-gcc等命令,支持ARMv8-A及后续64位ARM架构。
安装Linaro优化工具链(可选)
Linaro是由ARM、IBM、TI等厂商联合组织的开源项目,其工具链针对Linux内核和嵌入式应用进行了深度优化,编译效率更高,安装Linaro GCC 12(示例版本):
# 添加Linaro软件源 wget https://releases.linaro.org/components/toolchain/binaries/7.5-2019.12/aarch64-linux-gnu/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu.tar.xz sudo tar -xvf gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu.tar.xz -C /opt # 创建软链接(方便使用) sudo ln -s /opt/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc /usr/local/bin/aarch64-linux-gnu-linaro-gcc
注意:Linaro工具链以预编译包形式提供,需手动下载并配置路径,不如
apt安装便捷,适合对编译性能有极致需求的场景。
验证安装是否成功
安装完成后,需验证交叉编译器是否能正常工作,以下是具体步骤:
检查编译器版本
通过-v或--version参数查看编译器版本信息,确认工具链已正确安装:
# 检查32位ARM工具链版本 arm-linux-gnueabihf-gcc --version # 示例输出: # arm-linux-gnueabihf-gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0 # Copyright (C) 2021 Free Software Foundation, Inc. # This is free software; see the source for copying conditions. There is NO # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # 检查64位ARM工具链版本 aarch64-linux-gnu-gcc --version # 示例输出: # aarch64-linux-gnu-gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0 # Copyright (C) 2021 Free Software Foundation, Inc. # This is free software; see the source for copying conditions. There is NO

