交叉编译器是在一种架构(如x86_64)的宿主机上生成另一种架构(如ARM)目标程序的工具链,开发ARM Linux应用时,安装armlinux gcc是基础步骤,以下是详细安装流程,涵盖不同Linux发行版、架构选择及环境配置。

安装前准备
- 确认目标ARM架构:根据开发板或芯片的ARM版本选择对应编译器,常见架构包括:
- ARMv6/ARMv7(32位):如树莓派2/3,可选
arm-linux-gnueabihf-gcc(硬浮点)或arm-linux-gnueabi-gcc(软浮点)。 - ARMv8(64位,AArch64):如树莓派4/64位系统,需
aarch64-linux-gnu-gcc。
- ARMv6/ARMv7(32位):如树莓派2/3,可选
- 检查宿主机环境:确保系统为Linux(推荐Ubuntu/Debian或CentOS/RHEL),且已安装
build-essential(Ubuntu/Debian)或gcc、make(CentOS/RHEL)等基础编译工具,可通过sudo apt install build-essential或sudo yum groupinstall "Development Tools"安装。
安装方法(以包管理器为主)
Ubuntu/Debian系统(基于APT)
Ubuntu/Debian的官方仓库已提供预编译交叉编译器包,直接安装即可:
- 更新包列表:
sudo apt update
- 安装对应架构编译器:
- 32位ARM硬浮点(常用):
sudo apt install gcc-arm-linux-gnueabihf
- 32位ARM软浮点:
sudo apt install gcc-arm-linux-gnueabi
- 64位ARM(AArch64):
sudo apt install gcc-aarch64-linux-gnu
- 32位ARM硬浮点(常用):
CentOS/RHEL系统(基于YUM/DNF)
CentOS/RHEL默认仓库可能无交叉编译器,需先安装EPEL(Extra Packages for Enterprise Linux)源:
- 安装EPEL源(CentOS 7/8):
sudo yum install epel-release # CentOS 7 sudo dnf install epel-release # CentOS 8/9
- 安装编译器:
- 32位ARM硬浮点:
sudo yum install --allowerasing gcc-arm-linux-gnueabihf-cross # CentOS 7 sudo dnf install gcc-arm-linux-gnueabihf-cross # CentOS 8/9
- 64位ARM:
sudo yum install gcc-aarch64-linux-gnu-cross # CentOS 7 sudo dnf install gcc-aarch64-linux-gnu-cross # CentOS 8/9
- 32位ARM硬浮点:
不同架构与包名对应表
| 目标架构 | ABI类型 | Ubuntu/Debian包名 | CentOS/RHEL包名 |
|---|---|---|---|
| ARMv6/ARMv7 | 硬浮点(hf) | gcc-arm-linux-gnueabihf | gcc-arm-linux-gnueabihf-cross |
| ARMv6/ARMv7 | 软浮点(el) | gcc-arm-linux-gnueabi | gcc-arm-linux-gnueabi-cross |
| ARMv8(AArch64) | gcc-aarch64-linux-gnu | gcc-aarch64-linux-gnu-cross |
环境配置
安装后,编译器通常位于/usr/bin/,但系统可能无法直接识别命令,需添加到环境变量:
- 编辑用户配置文件(以bash为例):
nano ~/.bashrc
- 添加PATH路径(末尾追加):
export PATH=/usr/bin:$PATH
- 使配置生效:
source ~/.bashrc
验证安装
-
检查版本信息:

arm-linux-gnueabihf-gcc --version # 替换为实际安装的编译器命令
若输出包含
arm-linux-gnueabihf及版本号(如gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0),则安装成功。 -
编译测试程序:
创建test.c如下:#include <stdio.h> int main() { printf("Hello ARM Linux!n"); return 0; }使用交叉编译器编译:
arm-linux-gnueabihf-gcc -o test_arm test.c
检查生成文件的目标架构:

file test_arm
若输出包含
ARM(如ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked,则说明编译器可正常生成ARM架构程序。
注意事项
- 依赖冲突:若安装时提示依赖缺失,可通过
sudo apt install -f(Ubuntu/Debian)或sudo yum-complete-transaction(CentOS/RHEL)修复。 - 多版本管理:若需安装多个版本编译器,可通过
update-alternatives工具管理,避免命令冲突:sudo update-alternatives --config arm-linux-gnueabihf-gcc
相关问答FAQs
Q1: 安装后执行arm-linux-gcc命令提示“command not found”,如何解决?
A: 首先确认编译器是否安装成功(通过dpkg -l | grep gcc-arm或yum list installed | grep gcc-arm-linux检查),若已安装但命令找不到,需手动添加编译器路径到PATH,编译器通常位于/usr/bin/,若在/usr/aarch64-linux-gnu/bin/等路径,需在~/.bashrc中添加export PATH=/usr/aarch64-linux-gnu/bin:$PATH,然后执行source ~/.bashrc,也可使用完整路径执行,如/usr/bin/arm-linux-gnueabihf-gcc --version。
Q2: 如何选择正确的armlinux gcc版本?
A: 选择编译器需结合目标设备的ARM架构和ABI:
- 架构:通过目标设备运行
uname -m确认,输出armv7l选32位编译器,aarch64选64位编译器。 - ABI:硬浮点(hf)支持浮点运算硬件加速,适用于大多数现代ARM设备(如树莓派);软浮点(el)仅用于无浮点单元的旧设备,若不确定,优先选择硬浮点版本(
arm-linux-gnueabihf-gcc或aarch64-linux-gnu-gcc),可参考芯片厂商文档或开发板社区推荐。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/29887.html