错误 [E0463]:找不到 std 的箱子...如何在 x64 Windows 机器上编译 Rust x32?

Error[E0463]: can't find crate for std... how to compile Rust x32 in a x64 Windows machine?

我在 Windows 10 x64。我安装了 Visual Studio 2019,这让我可以毫无问题地为 x32 和 x64 编译 C 和 C++。

现在,对于 Rust,我通过 rustup 安装了 stable-x86_64-pc-windows-msvc 工具链,这让我可以很好地编译 x64 二进制文件。

为了编译 Rust x32,我安装了 stable-i686-pc-windows-msvc,但是当我 运行 cargo test --target i686-pc-windows-msvc 时,它给了我 error[E0463]: can't find crate for std.

我该如何解决这个问题?

这似乎是对什么是toolchain和什么是target的误解。

代码总是为某些 目标三元组构建 - 它通常由相关系统完全定义(Windows 系统是一个例外,因为它们有两个目标三元组的种类 - *-msvc*-gnu,取决于 C 编译器和链接器)。

安装工具链时,使用

rustup toolchain install toolchain-name

其名称定义为compiler_version-target_triple,例如stable-x86_64-pc-windows-msvc。这里的目标三元组是用于构建编译器的那个,即它由 host 系统定义——运行编译过程的那个;因此,几乎所有已安装的工具链只会在 version 部分有所不同 - 例如,如果您需要一些代码来使用 nightly-only 功能,您将在 [=17] 旁边安装 nigtly-*triple* =].

添加目标时,使用

rustup target add target-name

它的名字只是目标三元组,没有参考编译器版本。在这种情况下,三元组是编译器使用的,构建你自己的代码,并用于预构建的标准库;这就是您在为 cross-compilation 使用编译器时需要使用的内容,包括编译到另一个处理器架构(32 位与 64 位)。编译器本身仍会为您的主机构建,但它会为另一个系统发出工件。