【Linux 情况搭建】ARM-Linux-gcc 交叉编译工具链安装

[复制链接]
发表于 2026-10-6 13:51:39 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×

嵌入式开发绕不开交叉编译:在 x86 的 Ubuntu 上编译出能在 ARM 板子上跑的程序。这时候就需要交叉编译工具链,ARM-Linux-gcc 是最常见的一套。装它本身不难,难在装完之后「命令找不到」这个问题,几乎每个人都会遇到一次。本文把原理、安装、环境变量配置一次讲透。

一、什么是交叉编译工具链

交叉编译工具链是一组用于「在一种平台上编译出运行在另一种平台上的程序」的工具集合。ARM-Linux-gcc 就是为 ARM 架构的 Linux 系统开发软件而设计的工具链,它包含编译器、汇编器、链接器以及与目标平台匹配的 C 库。

换句话说:编译器跑在你的开发机上,但它生成的可执行文件是给 ARM 板子用的。这也是为什么不能直接用系统自带的 gcc——架构指令集不一样。

二、先确认当前环境

arm-linux-gcc -v

如果提示 command not found,说明系统里还没有这套工具链,可以往下装。如果能看到版本信息,说明已经装过了,直接跳到验证环节。

三、两种安装方式

方式一:apt 安装(简单,但版本不可控)

Ubuntu 源里就有交叉编译工具链,直接装:

sudo apt update
sudo apt install gcc-arm-linux-gnueabi

优点是省事,缺点是版本由源决定,可能与你的板子或 SDK 要求不一致。做产品开发时,工具链版本通常要和 SDK 严格对齐,所以更常见的是方式二。

方式二:手工解压官方提供的工具链

  1. 从板子厂商或工具链官方渠道获取压缩包(通常是 .tar.bz2 格式),别用来路不明的第三方打包版本——工具链会参与最终固件的生成,属于供应链上的关键环节。
  2. 拷到 Ubuntu 上,解压到用户目录下:
sudo tar -jxvf 工具链文件.tar.bz2 -C /opt/toolchain
  1. 解压后可以看到 bin 目录,arm-linux-gcc 就在里面。

四、配环境变量,解决「命令找不到」

只解压不配路径,命令行里是敲不出来的。编辑环境变量文件:

sudo vim /etc/environment

参照文件里已有的格式,把工具链 bin 目录加到路径里,例如在 PATH 那一行末尾追加:

:/opt/toolchain/gcc-arm/bin

保存后让它生效(这里有两种方式):

source /etc/environment

注意 /etc/environment 属于系统级配置,当前 shell 需要重新登录或 source 才生效。更推荐的做法是写到 /etc/profile.d/ 下建一个 .sh 文件,这样对登录 shell 更友好。

顺便说个整理技巧:解压出来的文件夹名通常又长又乱,可以重命名成短名字:

mv 原始名称 arm-linux-gcc

重命名后记得同步改环境变量里的路径,否则又会找不到命令。

五、验证安装

arm-linux-gcc -v
arm-linux-gcc --version

能打印出工具链版本、目标架构(target 字段会显示类似 arm-linux 或 arm-none-eabi),就说明路径配对了。进一步验证可以编一个最小程序:

echo 'int main(){return 0;}' > t.c
arm-linux-gcc t.c -o t
file t

file 的输出里应该显示 ARM 或 32-bit LSB executable, ARM,这才能证明它真的在交叉编译,而不只是名字叫 arm 而已。

六、让命令更好用:建软链接

有些工具链的二进制名很长(带版本号和 target 前缀),每次敲很累。可以在 /usr/local/bin 下建软链接:

sudo ln -s /opt/toolchain/gcc-arm/bin/arm-linux-gnueabihf-gcc /usr/local/bin/armgcc

以后直接敲 armgcc 即可。ln -s 目标 链接名 的顺序别写反,写反了会报软链接层数过多。

七、常见问题

  • 报 No such file or directory 却是文件明明存在:多半是 32 位工具链跑在 64 位系统上缺 32 位运行库,装 libc6:i386 及对应依赖。
  • 编译时报找不到头文件:目标平台的 sysroot 没配,需要在编译命令里加 --sysroot= 指向工具链自带的系统根。
  • 链接时报找不到 -lc:工具链与目标板上的库版本不匹配,这种情况要换回与 SDK 一致的工具链版本。
  • source /etc/environment 后新开终端又失效:说明改的不是当前用户 shell 读的文件,转到 ~/.bashrc 或 /etc/profile.d/ 里再配一次。

qidao123.com企服评测-应用市场 编辑提示

回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表