错误 [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 位)。编译器本身仍会为您的主机构建,但它会为另一个系统发出工件。
我在 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 位)。编译器本身仍会为您的主机构建,但它会为另一个系统发出工件。