我正在编译一个rust应用程序,它将被静态链接,然后放置在一个外部服务器上。我应该查找什么设置、配置或表来找到正确的编译目标?对于大多数现代的windows服务器和计算机,x86_64-pc-windows-msvc应该工作得很好,但我想知道是否有更具体的方法来解决这个问题。
Here the rustup docs提到了windows安装和注意事项,但没有提到如何弄清楚目标。
我正在编译一个rust应用程序,它将被静态链接,然后放置在一个外部服务器上。我应该查找什么设置、配置或表来找到正确的编译目标?对于大多数现代的windows服务器和计算机,x86_64-pc-windows-msvc应该工作得很好,但我想知道是否有更具体的方法来解决这个问题。
Here the rustup docs提到了windows安装和注意事项,但没有提到如何弄清楚目标。
1条答案
按热度按时间ztmd8pv51#
请尝试转到您正在为其构建的系统并运行
echo %PROCESSOR_ARCHITECTURE%
。这将为我们提供有关CPU体系结构的信息,以帮助我们做出决定。根据win32文档,它的值将是
AMD64
、IA64
、ARM64
或x86
。这些值与可用的windows rust目标对齐。我可以通过运行rustup target list
并查找名称中包含windows的目标来找到所有的rust目标。下面是我的机器上的输出:对于
PROCESSOR_ARCHITECTURE
的值,我们可以或多或少地通过谷歌搜索它们来估计哪个是哪个。AMD64
:这只是x86_64
的另一个名称,因此我们需要使用x86_64-pc-windows-msvc
或x86_64-pc-windows-gnu
。IA64
:¯*()*/¯ Rust是建立在LLVM之上的。IA64
已经到了它的生命周期,没有多少硬件使用它,所以LLVM decided not to support this architecture。我认为gcc
可能确实支持它,但是我们已经不太幸运了,当我们使用Rust的时候。ARM64
:这对应于aarch64
体系结构,因此我们应该使用aarch64-pc-windows-msvc
。x86
:这实际上意味着我们在32位模式下运行,因此我们需要选择i686-pc-windows-msvc
或i686-pc-windows-gnu
。至于
i586-pc-windows-msvc
,它指的是旧的I5奔腾架构。它应该兼容较新的i686
和x86_64
架构,但可能会或可能不会作为性能。我会避免它,除非你是工作与旧的硬件和需要兼容性。我也假设它将不兼容windows 11由于新的64位要求。至于
msvc
和gnu
之间的区别,你可以选择。我想msvc
会更容易使用,但我还没有尝试过使用gnu
版本。