Rust在Windows平台上的交叉编译
发布平台
Rust在未设置发布平台时,默认生成当前系统架构的可执行文件。可以通过 --target
命令参数显式发布到其它平台,比如从windows发布到linux-arm64。但这需要配置对应平台的交叉编译器,而Rust官方并未提供交叉编译器,需要自行从第三方平台去寻找。
默认发布到windows-x64平台:
sh
cargo build --release
windows平台发布到linux-arm64平台:
sh
cargo build --release --target aarch64-unknown-linux-gnu
windows平台发布到linux-x64平台:
sh
cargo build --release --target x86_64-unknown-linux-musl
支持的平台
Rust支持的平台列表可以通过如下命令获取:
sh
rustup target list
已安装的平台会在后面显示 (installed)
。
添加或移除平台
添加:
sh
rustup target add aarch64-unknown-linux-gnu
移除:
sh
rustup target remove aarch64-unknown-linux-gnu
下载平台交叉编译器并配置
要发布到linux-arm64平台,可以在 https://releases.linaro.org/components/toolchain/binaries/ 这里下载编译器,推荐latest版本。或者从 https://github.com/kekeqy/windows-hosted-aarch64-linux-musl-gcc-cross-compiler 这里下载。
要发布到linux-x64平台,可以在 https://github.com/kekeqy/windows-hosted-x86_64-linux-musl-gcc-cross-compiler 这里下载编译器,亲测可用。
尽量选择 musl
版本,而非 gnu
版本,因为 musl
是静态编译,不依赖系统本地的库文件。下载好的编译器解压出来,并将bin目录添加到系统环境变量Path中。
最后,再配置一下平台的链接器,内容文本如下:
txt
[target.aarch64-unknown-linux-gnu]
linker = "aarch64-linux-gnu-gcc"
[target.x86_64-unknown-linux-musl]
linker = "x86_64-linux-musl-gcc"
如果是配置到全局,将上述内容文本追加到 C:\Users\用户名XXX\.cargo\config
中。
如果仅是配置到单个项目,则在项目根目录中创建文件夹 .cargo
,并在 .cargo
文件夹内创建 config.toml
文件,将上述内容文本拷贝到 config.toml
中。