*-win7-windows-msvc
层级:3
Windows 目标继续支持 Windows 7。
目标维护者
- @roblabla
要求
此目标支持所有核心、分配、标准库和测试。这将在维护者托管的私有基础设施上每晚自动测试。主机工具也可能有效,但目前尚未测试。
这些目标遵循 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 标准库和任何 Rust 程序。