rust windows 交叉编译_macOS交叉编译rust代码到树莓派

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

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

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

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

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

先来看一看笔者的板子

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

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 ~/.profile

export 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!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值