*-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-cllld-link,并确保它们位于您的 $PATH 中。

  • 安装 xwincargo 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 程序。