Linux,安装 ARM 交叉编译器

为什么安装ARM交叉编译器 ?

1 、 架构不同:

Linux PC (Intel/AMD) 通常是 x86/x86_64 架构。

如树莓派、手机、路由器、IoT设备...是 ARM 架构。

不同架构的 CPU 指令集不同,直接编译的程序无法跨架构运行

2 、交叉编译的作用 :

交叉编译器(如 arm-linux-gnueabihf-gcc)运行在 x86 主机上,但生成 ARM 架构的可执行文件。

这样就可以在 PC 上快速编译,然后将二进制文件复制到 ARM 设备上运行。

3. 为什么不用 ARM 设备直接编译?

ARM 设备(尤其是嵌入式设备)通常计算资源有限(CPU慢、内存小)。

在 PC 上交叉编译速度更快,且不影响目标设备的运行性能。

开发环境(编辑器、工具链)在 PC 上更完善。

安装方法一:从APT仓库安装(推荐初学者)

1、安装ARM交叉编译器(Ubuntu官方版)
sudo apt update
sudo apt install gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf

2、验证安装
arm-linux-gnueabihf-gcc --version
arm-linux-gnueabihf-g++ --version

3、其他有用工具(ARM 交叉编译的二进制工具集,创建、管理和操作二进制文件)
sudo apt install binutils-arm-linux-gnueabihf

**安装****方法二:安装Linaro GCC(**Linaro 版,更专业 )

下载 Linaro GCC(ARM官方合作),以gcc-linaro-7.5.0为例:

1、 cd ~ 切换到用户目录,然后输入下面的命令,下载压缩包

wget https://releases.linaro.org/components/toolchain/binaries/7.5-2019.12/arm-linux-gnueabihf/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf.tar.xz

2、 解压到/opt
sudo tar -xf gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf.tar.xz -C /opt

3、添加到PATH
echo 'export PATH=/opt/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf/bin:$PATH' >> ~/.bashrc
source ~/.bashrc

4、 验证

arm-linux-gnueabihf-gcc --version

查找编译器安装位置:

查找所有同名的编译器(按PATH顺序): which -a arm-linux-gnueabihf-gcc

查找 ARM 交叉编译器(只显示PATH中优先级最高的): which arm-linux-gnueabihf-gcc

查找对应的 C++ 编译器: which arm-linux-gnueabihf-g++

相关推荐
qetfw32 分钟前
UOS DHCP Relay:跨网段分配与 IP、DNS、网关验证
linux·服务器·网络·tcp/ip·uos
叼烟扛炮3 小时前
Linux 学习笔记(四十一):TCP 并发演进——从单进程到多线程服务器
linux·运维·服务器·网络·笔记·学习·tcp/ip
ynchyong3 小时前
Linux 有两个 “版本“
linux·发行版·内核版本
叼烟扛炮3 小时前
Linux 学习笔记(四十四):HTTP 协议解析与极简 Web 服务器实战
linux·服务器·学习
叼烟扛炮3 小时前
Linux 学习笔记(四十三):网络编程进阶——自定义协议解决 TCP 粘包与守护进程
linux·开发语言·网络·笔记·tcp/ip
Escalating_xu3 小时前
【Linux 网络编程】DNS 与 ICMP:从域名解析到 ping、traceroute,把“网络通不通”问清楚
linux·网络·php
一枕槐安4875 小时前
大模型限流、重试、超时处理:API 调用健壮性方案
linux·服务器·php·大模型api·指数退避·限流控制·超时预算
西索斯coding5 小时前
gpt-image-2.5-sunburst 和 gemini-3.1-flash-image 差多少?60 组项目素材的成功成本评测框架
java·linux·gpt·ai
箓维5 小时前
应用层协议基础_序列化与反序列化
linux
wuminyu6 小时前
Java字节码学习总结:字节码如何加载、解析和执行
java·linux·c语言·jvm·c++