linux交叉编译aix_macOS交叉编译rust代码到树莓派

本文介绍了如何在macOS环境下,通过交叉编译将Rust代码编译为适用于树莓派arm7架构的可执行文件。首先确认树莓派架构为armv7l,然后在macOS上安装arm7的gcc编译器和Rust的目标平台。接着创建Rust项目,配置.cargo/config文件,并使用rustup添加目标平台。最后进行交叉编译并将生成的文件上传到树莓派执行。
摘要由CSDN通过智能技术生成

笔者一直想搞个树莓派来玩,由于囊中羞涩一直没舍得买,加上自己一直是做 Java 开发,树莓派的发挥也不大,就一直处于犹豫徘徊当中。直到这次,实在是忍不住想试试 Rust 嵌入式开发,弄几个传感器搞搞物联网方面的学习,于是狠心从某宝购买了一块4B 的板子。

下单后,就一直等待卖家发货,不停刷新着物流信息,经过两天,板子终于到我手中了。不管三七二十一,先组装好,然后跑个 Hello world 再说。

因为笔者不想直接在板子上搭开发环境,所以就要选择交叉编译,在本地电脑上编译好,再上传到板子里面去,而网上的交叉编译教程基本上都是 Linux 的,虽然跟 macOS 差别不是很大,但笔者还是觉得应该总结一下,并把这个过程分享出来。

有些朋友可能对交叉编译并不是很理解,这里笔者简述一下:当需要在 Windows 系统下编译 Linux 、 Android 或者 macOS 平台的目标文件时,就需要用到交叉编译,反过来说在 Linux 系统要编译 Windows 平台的应用,同样是需要用到交叉编译。交叉编译也不仅仅是指跨操作系统,还跟 cpu 架构有关。例如笔者情况就是在 macOS x86_64 的架构上将目标文件编译成 Linux arm7 架构可以运行的。

先来看一看笔者的板子

89c5832d63ef97d8c65e74090fc42fda.png

再往下就是这个交叉编译的过程了。

1、查看树莓派架构

uname -m

输出 armv7l 说明是 arm7 处理器,因此我们在 macOS 上要安装 arm7 相关编译器。

2、安装 arm7 架构的 gcc

wget https://mac.musl.cc/armv7l-linux-musleabihf-cross.tgz# 解压到制定目录tar zxvf armv7l-linux-musleabihf-cross.tgz -C $HOME# 配置环境变量vim ~/.profileexport PATH="$PATH:$HOME/armv7l-linux-musleabihf-cross/bin"source ~/.profile# 测试安装结果armv7l-linux-musleabihf-gcc -v

注意:$HOME为变量(实际对应当前用户目录),改成你需要的路径就可以了。

3、安装 rust 对应的 target

rustup target add armv7-unknown-linux-musleabihf

使用 rustup target add 命令添加目标平台,简单方便。

4、创建 rust 项目

cargo new hellopi --bin

5、在 rust 项目下配置 .cargo/config 文件为以下内容

[target.armv7-unknown-linux-musleabihf]linker="armv7l-linux-musleabihf-gcc"

6、交叉编译

cargo run --target=armv7-unknown-linux-musleabihf# 或者cargo run --target=armv7-unknown-linux-musleabihf --release

编译后在 ./target 目录下会生成一个目标平台文件夹 armv7-unknown-linux-musleabihf 而编译结果就在这个文件夹对应的 debug/release 目录下。

7、上传目标文件到树莓派

scp ./target/armv7-unknown-linux-musleabihf/release/hellopi pi@192.168.1.100:/home/pi

8、在树莓派上执行目标文件

# 使用 ssh 命令登录到树莓派,在 /home/pi 中执行目标文件./hellopi# 输出Hello, world!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值