如何通过查看windows计算机来确定要编译到哪个铁锈目标



我正在编译一个rust应用程序,该应用程序将被静态链接,然后放置在外部服务器上。我应该查找哪些设置、配置或表才能找到正确的编译目标?对于大多数现代的windows服务器和计算机,x86_64-pc-windows-msvc应该可以正常工作,但我想知道是否有更具体的方法来解决这个问题。

在这里,rustup文档提到了windows的安装和注意事项,但没有提到如何确定目标。

尝试转到正在为其构建的系统并运行echo %PROCESSOR_ARCHITECTURE%。这将为我们提供有关CPU体系结构的信息,帮助我们做出决定。

根据win32文档,它将是AMD64IA64ARM64x86的值。方便的是,这些与可用的窗户锈蚀目标一致。我可以通过运行rustup target list并查找名称中有windows的目标来找到所有的rust目标。这是我机器上的输出:

$ rustup target list | grep windows
aarch64-pc-windows-msvc
i586-pc-windows-msvc
i686-pc-windows-gnu
i686-pc-windows-msvc
x86_64-pc-windows-gnu
x86_64-pc-windows-msvc

对于PROCESSOR_ARCHITECTURE的值,我们可以通过谷歌搜索来或多或少地近似哪个是哪个。

  • AMD64:这只是x86_64的另一个名称,所以我们需要使用x86_64-pc-windows-msvcx86_64-pc-windows-gnu
  • IA64:(ツ)/’Rust建立在LLVM之上。IA64已经到了生命的尽头,没有多少硬件使用它,所以LLVM决定不支持这种体系结构。我认为gcc可能确实支持它,但在使用Rust时,我们已经运气不佳了
  • ARM64:这对应于aarch64体系结构,所以我们应该使用aarch64-pc-windows-msvc
  • x86:这实际上意味着我们在32位模式下运行,所以我们需要选择i686-pc-windows-msvci686-pc-windows-gnu

至于i586-pc-windows-msvc,它指的是较旧的I5 Pentium体系结构。它应该与较新的i686x86_64体系结构兼容,但可能具有性能,也可能不具有性能。除非您使用较旧的硬件并且需要兼容性,否则我会避免使用它。我还认为,由于新的64位要求,它将与windows 11不兼容。

至于msvcgnu之间的差异,您可以选择。我想msvc会更容易使用,但我还没有尝试使用gnu版本。

最新更新