搭建 RUST 交叉编译环境

在嵌入式 `Linux` 上运行 `RUST`

  • [在嵌入式 `Linux` 上运行 `RUST`](#在嵌入式 Linux 上运行 RUST)
    • [构造交叉编译的 `RUST` 环境](#构造交叉编译的 RUST 环境)
    • 编译代码
    • 其他
  • 参考文档

在嵌入式 Linux 上运行 RUST

最近在开发 zynq 相关的产品,想使用 rust 来开发应用程序;所以研究了一下如何在 pc 上进行 rust 的交叉编译。

本人用的是 zynq 的 7035 芯片,里面包含两个 cortex-A7 的处理器。

shell 复制代码
$ cat /proc/cpuinfo
processor	: 0
model name	: ARMv7 Processor rev 0 (v7l)
BogoMIPS	: 383.33
Features	: half thumb fastmult vfp edsp neon vfpv3 tls vfpd32 
CPU implementer	: 0x41
CPU architecture: 7
CPU variant	: 0x3
CPU part	: 0xc09
CPU revision	: 0

processor	: 1
model name	: ARMv7 Processor rev 0 (v7l)
BogoMIPS	: 383.33
Features	: half thumb fastmult vfp edsp neon vfpv3 tls vfpd32 
CPU implementer	: 0x41
CPU architecture: 7
CPU variant	: 0x3
CPU part	: 0xc09
CPU revision	: 0

Hardware	: Xilinx Zynq Platform
Revision	: 0003
Serial		: 0000000000000000

构造交叉编译的 RUST 环境

  • 查看 rust 支持的 target
shell 复制代码
rustup target list
  • 安装需要的 target
shell 复制代码
rustup target add armv7-unknown-linux-gnueabihf
  • 编写配置文件

~/.cargo/config.toml 中添加配置信息

shell 复制代码
[target.armv7-unknown-linux-gnueabihf]
linker = "arm-linux-gnueabihf-gcc"

可以在此设置使用哪个编译器。

我设置为 zynqarm-xilinx-linux-gnueabi-gcc 后提示连接失败,应该是还需要设置其他的,暂时没有研究。

  • 安装编译器
shell 复制代码
sudo apt-get install -y libc6-armhf-cross libc6-dev-armhf-cross gcc-arm-linux-gnueabihf

编译代码

shell 复制代码
cargo build --target armv7-unknown-linux-gnueabihf

其他

rust 代码虽然是静态编译,但是会使用系统的 libc 动态库。

在我将代码复制到嵌入式系统上运行后,提示找不到 libgcc_s.so.1 动态库

shell 复制代码
./hello: error while loading shared libraries: libgcc_s.so.1: cannot open shared object file: No such file or directory

zynq 提供的资料中,找到该动态库,并复制到嵌入式系统的 /lib 文件夹下,就可以正常运行了。

参考文档

《Rust交叉编译armv7环境配置》

相关推荐
Asthenia04129 分钟前
RocketMQ 消息不丢失与持久化机制详解-生产者与Broker之间的详解
后端
〆、风神38 分钟前
Spring Boot 整合 Lock4j + Redisson 实现分布式锁实战
spring boot·分布式·后端
Asthenia041241 分钟前
Select、Poll、Epoll 详细分析与面试深度剖析/C代码详解
后端
安冬的码畜日常42 分钟前
【AI 加持下的 Python 编程实战 2_10】DIY 拓展:从扫雷小游戏开发再探问题分解与 AI 代码调试能力(中)
开发语言·前端·人工智能·ai·扫雷游戏·ai辅助编程·辅助编程
烛阴1 小时前
Node.js中必备的中间件大全:提升性能、安全与开发效率的秘密武器
javascript·后端·express
南雨北斗1 小时前
WMware虚拟机下载方法(2025年4月)
后端
朝阳5811 小时前
Rust项目GPG签名配置指南
开发语言·后端·rust
微网兔子1 小时前
伺服器用什么语言开发呢?做什么用什么?
服务器·c++·后端·游戏
朝阳5811 小时前
Rust实现高性能目录扫描工具ll的技术解析
开发语言·后端·rust
程高兴1 小时前
基于Matlab的车牌识别系统
开发语言·matlab