搭建 RUST 交叉编译环境
在嵌入式 `Linux` 上运行 `RUST`
在嵌入式 Linux
上运行 RUST
最近在开发 zynq
相关的产品,想使用 rust
来开发应用程序;所以研究了一下如何在 pc
上进行 rust
的交叉编译。
本人用的是 zynq
的 7035 芯片,里面包含两个 cortex-A7
的处理器。
$ 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
rustup target list
- 安装需要的
target
rustup target add armv7-unknown-linux-gnueabihf
- 编写配置文件
在 ~/.cargo/config.toml
中添加配置信息
[target.armv7-unknown-linux-gnueabihf]
linker = "arm-linux-gnueabihf-gcc"
可以在此设置使用哪个编译器。
我设置为
zynq
的arm-xilinx-linux-gnueabi-gcc
后提示连接失败,应该是还需要设置其他的,暂时没有研究。
- 安装编译器
sudo apt-get install -y libc6-armhf-cross libc6-dev-armhf-cross gcc-arm-linux-gnueabihf
编译代码
cargo build --target armv7-unknown-linux-gnueabihf
其他
rust
代码虽然是静态编译,但是会使用系统的 libc
动态库。
在我将代码复制到嵌入式系统上运行后,提示找不到 libgcc_s.so.1
动态库
./hello: error while loading shared libraries: libgcc_s.so.1: cannot open shared object file: No such file or directory
将 zynq
提供的资料中,找到该动态库,并复制到嵌入式系统的 /lib
文件夹下,就可以正常运行了。
参考文档
原文地址:https://blog.csdn.net/m0_37749564/article/details/145120018
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!