目标: 在linux x86_64环境编译arm64的bin
环境:ubuntu 20.04的容器环境,arch为x86_64
安装rust环境
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
#设置环境变量,假设当前用户为root
echo "PATH=$PATH:/root/.cargo" >> /root/.bashrc
. /root/.bashrc
新建rust项目
cargo new hello; cd hello
安装gnu交叉编译工具
apt install gcc-aarch64-linux-gnu -y
给rust设置targe
rustup install stable-aarch64-unknown-linux-gnu
rustup target add aarch64-unknown-linux-gnu
给rust设置toolchain
vim /root/.cargo/config
#写入一下内容
[build]
target = "aarch64-unknown-linux-gnu"
[target.aarch64-unknown-linux-gnu]
linker = "/usr/bin/aarch64-linux-gnu-gcc"
编译
cargo build --target=aarch64-unknown-linux-gnu
完
有一点不理解,既然rustup可以给对应的target设置toolchain为什么无效,还要手动在config中配置才起作用?