ARM64、RISCV64、ARM32等交叉编译工具下载配置

本文详细介绍了如何下载和配置针对不同架构的交叉编译工具链,以及在遇到glibc版本不兼容问题时的解决方案,包括升级glibc和静态链接glibc以适应目标设备。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文档适用于安装各类交叉编译工具,arm32,arm64,riscv64等架构芯片的交叉编译平台

下载交叉编译工具链

bootlin官网

Cross-compilation toolchains for Linux - Home (bootlin.com)

如图所示,进入上面提供的网址,根据开发板配置选择交叉编译器下载

若是其它芯片,可以根据芯片的架构选择对应的交叉编译平台

将下载的文件复制到Ubuntu中

将交叉编译工具链解压到/opt目录下:

tar -zxvf toolchain_file.tar.gz -C /opt

然后配置环境变量,打开 ~/.bashrc

gedit ~/.bashrc

添加下行到末尾

export PATH=/opt/toolchain_bin_directory/bin:$PATH
    toolchain_bin_directory是你解压工具链后所得到的文件夹名称
export PATH=/opt/riscv64-lp64d--glibc--stable-2022.08-1/bin:$PATH

保存关闭文件后,重新使环境变量生效

source ~/.bashrc

使用交叉编译工具链,编译程序

riscv64-linux-gcc hello.c -o hello

再将编译好的程序复制到开发板下,运行

chmod 777 hello
./hello

运行后,报错,库版本兼容问题

该问题源于程序本身直接依赖的库没有问题,但是在迁移到其他机器时,间接依赖的库版本不兼容

通过查阅资料后,问题如下:

在开发板上运行编译后的程序时遇到了一个 GLIBC_2.34 版本不匹配的错误。这是因为你的开发板上的 glibc(GNU C Library)版本较低,不满足程序所需的最低版本要求。

解决措施:

1、升级 glibc:可以尝试在开发板上升级 glibc 版本,以满足程序对 GLIBC_2.34 的要求。

然而,这可能需要更改整个操作系统的 glibc 版本,可能会引入其他潜在的兼容性问题。在进行此操作之前,请确保你了解其潜在风险,并备份重要数据。

2、静态链接 glibc:另一种方法是静态链接 glibc 库,以便将其包含在你的可执行文件中。这样,你的程序将不再依赖于特定版本的 glibc。在编译时,你可以在链接阶段使用

-static选项来进行静态链接。

riscv64-linux-gcc -static -o hello hello.c

这将生成一个静态链接的可执行文件hello,其中包含了 glibc 的所有依赖项。

重新编译运行结果

chmod 777 hello
./hello

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值