目标: 在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中配置才起作用?

该博客详细介绍了如何在Ubuntu 20.04的x86_64环境下,通过安装rustup、设置目标架构、安装交叉编译工具链以及配置rust项目,来编译适用于ARM64架构的Rust程序。过程中涉及到rustup安装稳定版工具链、设置target、修改cargo配置文件以及使用cargo进行交叉编译。
1241

被折叠的 条评论
为什么被折叠?



