编译为 x86 时检测 OS x86 或 x64

问题描述

我开发了引导软件来启动我的游戏。我用 Go 做到了这一点。跨平台对我来说尤其重要。另外,我不想将下载链接分成两个 x86 / x64。我想在一个输出中处理所有事情。这就是我必须编译到 x86 的原因。当我这样做时,我无法正确检测到操作系统是 x86 还是 x64。

在编译为 x86 的软件中,我如何正确检测操作系统 x86 或 x64(在 Go 中)。

编译为 x86 时,此代码不正确。

const is64Bit = uint64(^uintptr(0)) == ^uint64(0)

解决方法

在 Windows you can call IsWow64Process 上确定您是否是在 64 位操作系统上运行的 32 位进程。请注意,如果您是在 64 位操作系统上运行的 64 位进程,它会返回 false,但如果您正在运行 64 位进程,那么您就知道该操作系统是 64 位的,否则它不会运行。>

另请注意,32 位 Windows 已过时。 Microsoft is already phasing out support for 32-bit Windows - they no longer want it to be installed on new computers.

在 Linux 上,您可以调用 uname 并查看 machine 字段。 Here's a list of possible values。请注意,它们中的大多数与您的程序不兼容,只有 i386i686x86_64

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...