Skip to content
目录

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 中。

技术支持:13352865103(柯工,微信同号);18688783852(柯工)