在 Linux 上构建 Windows 程序
(也可以查看 Windows 平台页面,了解有关为 Windows 开发的一般信息)
Rust 为构建 Windows 程序提供了两种不同的工具链:
首次设置 MSVC
Rust MSVC 工具链
实际上,你可以在 Linux 上使用相同的基于 MSVC 的 Rust 工具链,这也是在 Windows 构建程序时使用的方案。
将需要支持的目标平台添加到你的 Rust 安装库中(假设你使用了 rustup
):
rustup target add x86_64-pc-windows-msvc
这就安装了 Rust 为 Windows 编译程序所需的文件,包括 Rust 标准库。
Microsoft Windows SDKs
你需要安装微软的 Windows SDK,就像在 Windows 上工作时一样。在 Linux 上,这可以通过一个叫做 xwin
的简单脚本来完成。你需要接受微软的专利许可。
安装 xwin
:
cargo install xwin
现在,使用 xwin
接受微软的许可,从微软服务器下载所有文件,并将它们安装到你选择的目录中。
例如,假设要安装到 /opt/xwin/
:
xwin --accept-license 1 splat --output /opt/xwin
链接 (MSVC)
Rust 需要知道如何链接最终的 EXE 文件。
默认的微软链接器(link.exe
)在 Linux 上是不可用的。相反,我们需要使用 LLD 链接器(无论如何,在 Windows 上工作时也推荐使用这个)。只要在你的 Linux 发行版中安装 lld
包就可以了。
我们还需要告诉 Rust 微软 Windows SDK 库的位置(在上一步骤中与 xwin
一起安装时指定的位置)。
把这个添加到 .cargo/config.toml
中(位于你的主文件夹或你的 bevy 项目中)。
[target.x86_64-pc-windows-msvc]
linker = "lld"
rustflags = [
"-Lnative=/opt/xwin/crt/lib/x86_64",
"-Lnative=/opt/xwin/sdk/lib/um/x86_64",
"-Lnative=/opt/xwin/sdk/lib/ucrt/x86_64"
]
首次设置 GNU
Rust GNU 工具链
你也可以使用其他基于 GNU 的 Windows 工具链。
将需要支持的目标平台添加到你的 Rust 安装中(假设你使用 rustup
)。
rustup target add x86_64-pc-windows-gnu
这就安装了 Rust 为 Windows 编译程序所需的文件,包括 Rust 标准库。
MINGW
GNU 工具链需要安装 MINGW 环境,你的发行版可能为它提供了一个软件包。在你的发行版中搜索一个交叉编译的 MINGW 软件包。
它可能被称为:cross-x86_64-w64-mingw32,但这在不同的发行版中会有所不同。
你不需要来自微软的任何文件。
构建你的项目
最终,在完成所有的设置后,你就可以为 Windows 构建你的 Rust/Bevy 项目了。
cargo build --target=x86_64-pc-windows-msvc --release
cargo build --target=x86_64-pc-windows-gnu --release