交叉编译环境搭建

文章讲述了在嵌入式Linux开发中,如何获取和配置arm-linux-gnueabihf-gcc交叉编译工具链,包括从官网下载、解压、重命名、设置环境变量等步骤,并解决了在新环境中设置环境变量后仍找不到文件的问题,提到了可能缺少32位程序库的解决方案。

在嵌入式Linux开发中,无论是应用还是驱动开发,一般都是采用交叉编译的方式,对arm平台进行开发。在很多时候想要平台的可以运行文件都是通过linux编译好后移植到相应的平台上实现再次开发的,但是通过交叉编译环境生成的文件在linux。这样情况下就想要用到相应的交叉编译工具链,来完成程序的编译,生成相应的可执行文件,以适配目标平台的系统架构。

一、获取交叉编译的工具包

我这里使用的是arm-linux-gnueabihf-gcc-6.5.0 的版本来编译u_boot

获取方法 1、官网下载:https://releases.linaro.org/components/toolchain/binaries

下载时注意arm,armel是小端字节序编译器,armeb是大端字节序编译器

***********************************************************************************************************

2025年11月补充arm编译器8.2-10.3:

Downloads | GNU-A Downloads – Arm Developer

下载选择:

AArch32(32位ARM架构)
1. AArch32 bare-metal target
含义:针对32位ARM架构的裸机系统
特点:无操作系统环境、直接运行在硬件上、用于嵌入式系统、固件、bootloader等、不依赖任何操作系统库

2. AArch32 GNU/Linux target with hard float
含义:针对运行GNU/Linux的32位ARM系统,使用硬件浮点单元
特点:运行在Linux操作系统上、使用硬件FPU进行浮点运算、性能更好(相比软件浮点)、使用特定的ABI(如armhf)、AArch64(64位ARM架构)
3. AArch64 bare-metal target
含义:针对64位ARM架构的裸机系统
特点:无操作系统环境、直接访问硬件、用于高性能嵌入式系统、服务器固件等
4. AArch64 GNU/Linux target
含义:针对运行GNU/Linux的64位ARM系统
特点:标准的64位ARM Linux环境、使用系统调用和共享库、用于应用程序开发
5. AArch64 GNU/Linux big-endian target
含义:针对大端字节序的64位ARM Linux系统
特点:使用大端字节序(big-endian)、与网络字节序一致、在某些特定领域使用(如网络设备)

Bare-metal    嵌入式系统、固件、RTOS
GNU/Linux    应用程序、用户空间程序
Hard float    需要高性能浮点运算的应用
Big-endian    网络设备、协议处理

***********************************************************************************************************

2、板卡自带

3、找老大、组长、老师要相应的版本文件

二、将相应的文件移动到linux文件系统中解压(不要使用windos的解压工具解压,不适配)

tar -xvf gcc编译工具链压缩包名称

三、解压完成后可以更改为短一点的名字

mv 编译工具文件名称 版本名称

cd 6.5.0

lib一般放库文件,也就是后缀.lib的

include 一般包含头文件目录

bin表示binary目录,一般都是dll,exe等

然后 进入bin文件 cd bin

获取当前文件的绝对路径

pwd

四、设置全局变量

sudo vim .bashrc

在最后面添加:

PATH=/home/tools/cross-compiler/gcc-linaro-6.5.0-2018.12-i686_arm-linux-gnueabihf/bin:$PATH

中间的地址是上面获取的绝对地址,看情况更改

重新启动环境变量配置:

source .bashrc

最后通过

arm-linux-gnueabihf-gcc -v

然后在最下面就可以看见当前安装的交叉编译版本了。

ps:[P&S]交叉编译工具链配置好环境变量后依然找不到文件

当你的环境是新的时候设置了相关的环境变量还是没有版本号的时候

输入 arm-linux-gcc -v,

提示找不到

bash: /home/tools/cross-compiler/gcc-linaro-6.5.0-2018.12-i686_arm-linux-gnueabihf/bin/arm-linux-g++: No such file or directory

这样的错误

分析:是你当前的系统没有安装32位程序库

解决方法:

sudo apt-get install lsb-core

如果安装了这个还是有问题,还是环境问题再次安装其他的支持库

sudo apt-get install lib32ncurses5

sudo apt-get install lib32z1

最后再次使用:arm-linux-gnueabihf-gcc -v

一般就没啥问题了。

***********************************************************************************************************

2025年11月补充arm编译器:

其实交叉编译本质就是使用Ubuntu,去运行GCC编译出适合你板卡的可执行程序,一般内核构建的编译器和应用编译器需要统一版本

常见的使用方法:

1、解压到系统文件后直接到bin文件下运行,所需的库即可:

如图所示,在改目录下都是X68的Ubuntu的可执行程序,然后将你的代码转换为对应版本的可执行程序。

如下所示,直接使用:

2、设置临时环境变量

3、设置自驱动环境变量

***********************************************************************************************************

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

orange....

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值