交叉编译
Windows 下编译到 arm64-linux
需要下载 arm 的编译 toolchain,有不同的选择:使用aarch64-none-linux-gnu 或者 aarch64-none-linux-musl。
这里使用 aarch64-none-linux-gnu
- 安装好rust,可以正常编译
- 下载 windows 下的 arm-gnu-toolchain,并安装,配置环境变量 aarch64-none-linux-gnu/bin
地址:https://developer.arm.com/downloads/-/arm-gnu-toolchain-downloads, 选择 AArch64 GNU/Linux target (aarch64-none-linux-gnu) 安装,后配置环境变量。 在终端中执行 aarch64-none-linux-gnu-gcc -v 正常输出,证明配置完成。
- 配置 ~/.cargo/config.toml, 注意不是项目中的 Cargo.toml
[target.aarch64-unknown-linux-gnu] linker = "aarch64-none-linux-gnu-gcc"
- 安装 target
执行 rustup target add aarch64-unknown-linux-gnu
- 尝试编译
执行cargo build --target=aarch64-unknown-linux-gnu
- glibc 版本问题
编译后,在目标机器上没有对应的glibc版本,使用静态链接,在 ~/.cargo/config.toml 修改如下 [target.aarch64-unknown-linux-gnu] linker = "aarch64-none-linux-gnu-gcc" rustflags = ["-C", "target-feature=+crt-static"]