Rust交叉编译arm64 linux环境设置

系统环境

wsl debian11

目标环境

arm64 musl 即 aarch64-linux-musl (小爱音箱pro的系统就是基于openwrt,对应的平台就是这个)

步骤

安装target

rustup target install aarch64-unknown-linux-musl

下载musl toolchain

musl.cc可以轻易找到对应平台的toolchain
我的目标平台是aarch64-linux-musl,从首页进去往下拉第一个tgz文件就是aarch64-linux-musl-cross.tgz
下载下来解压到/opt下,并把其bin目录加入到当前用户的PATH环境变量中

wget https://musl.cc/aarch64-linux-musl-cross.tgz
sudo tar -xvf aarch64-linux-musl-cross.tgz  -C /opt/
echo 'PATH=/opt/aarch64-linux-musl-cross/bin/:$PATH' >> ~/.bashrc
source ~/.bashrc

增加cargo配置

修改~/.cargo/config,增加对应平台的linker

nano ~/.cargo/config

config内容如下,前source.crates-io和source.sjtu是配置cargo镜像源,已经配置了的可以不加。最后两行就是对应平台的配置

[source.crates-io]
replace-with = 'sjtu'
[source.sjtu]
registry = "https://mirrors.sjtug.sjtu.edu.cn/git/crates.io-index"
[target.aarch64-unknown-linux-musl]
linker = "aarch64-linux-musl-ld"

然后就可以执行对应平台的编译命令了

cargo build --release --target aarch64-unknown-linux-musl

参考文献:rust 交叉编译树莓派程序

posted @ 2023-05-16 21:58  turingguo  阅读(876)  评论(0编辑  收藏  举报