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 交叉编译树莓派程序