*-win7-windows-msvc
Tier: 3
Windows 目标继续支持 Windows 7。
目标维护者
- @roblabla
要求
此目标支持 core、alloc、std 和 test 的所有功能。维护者在私有基础设施上每晚自动对此进行测试。主机工具也可能工作,尽管目前尚未对此进行测试。
这些目标遵循 Windows 调用约定 для extern "C"。
与任何其他 Windows 目标一样,创建的二进制文件采用 PE 格式。
构建目标
您可以通过将目标添加到 config.toml 中的目标列表,来构建支持这些目标的 Rust。
[build]
build-stage = 1
target = ["x86_64-win7-windows-msvc"]
构建 Rust 程序
Rust 不为此目标发布预编译的工件。要为此目标编译,您需要构建启用此目标的 Rust(请参阅上面的“构建目标”),或者使用 build-std
或类似工具构建您自己的副本。
测试
创建的二进制文件在使用原生硬件的 Windows 或 Wine 上可以正常工作。可以使用 此处 描述的 remote-test-server
进行远程测试。
交叉编译工具链和 C 代码
兼容的 C 代码可以使用 MSVC 的 cl.exe
或 LLVM 的 clang-cl 构建。
可以使用 clang-cl/lld-link 进行交叉编译。它还需要 Windows SDK,可以使用 xwin
获取。
-
在您的机器上安装
clang-cl
和lld-link
,并确保它们在您的 $PATH 中。 -
安装
xwin
:cargo install xwin
-
使用
xwin
安装 Windows SDK:xwin splat --output winsdk
-
创建一个包含以下内容的
xwin-lld-link
脚本#!/usr/bin/env bash set -e XWIN=/path/to/winsdk lld-link "$@" /libpath:$XWIN/crt/lib/x86_64 /libpath:$XWIN/sdk/lib/um/x86_64 /libpath:$XWIN/sdk/lib/ucrt/x86_64
-
创建一个包含以下内容的
xwin-clang-cl
脚本#!/usr/bin/env bash set -e XWIN=/path/to/winsdk clang-cl /imsvc "$XWIN/crt/include" /imsvc "$XWIN/sdk/include/ucrt" /imsvc "$XWIN/sdk/include/um" /imsvc "$XWIN/sdk/include/shared" --target="x86_64-pc-windows-msvc" "$@"
-
在您的 config.toml 中,添加以下行
[target.x86_64-win7-windows-msvc] linker = "path/to/xwin-lld-link" cc = "path/to/xwin-clang-cl"
您现在应该能够交叉编译 Rust std 和任何 rust 程序。