为了账号安全,请及时绑定邮箱和手机立即绑定

如何确定程序是在 Go 中构建为 32 位还是 64 位?

如何确定程序是在 Go 中构建为 32 位还是 64 位?

Go
HUWWW 2021-12-20 19:25:43
我能得到的最接近的是runtime.GOARCH,但这也可能给出arm,它可以是 32 位或 64 位。我只关心这个程序是如何构建的,而不关心操作系统是否也支持 64 位可执行文件。例如,对于 AArch64 CPU 上的 ARM 模式或 x86-64 CPU 上的 32 位兼容模式,我仍然想要 32,因为这是该程序运行的模式。
查看完整描述

2 回答

?
白猪掌柜的

TA贡献1893条经验 获得超10个赞

使用 GOARCH for arm:arm (ARM) 和 arm64 (AArch64),


可选的环境变量


$GOOS 和 $GOARCH


目标操作系统和编译架构的名称。它们分别默认为 $GOHOSTOS 和 $GOHOSTARCH 的值(如下所述)。


$GOOS 的选择是


$GOOS     $GOARCH

darwin    386

darwin    amd64

darwin    arm

darwin    arm64

dragonfly     amd64

freebsd   386

freebsd   amd64

freebsd   arm

linux     386

linux     amd64

linux     arm

linux     arm64

linux     ppc64

linux     ppc64le

linux     mips64

linux     mips64le

netbsd    386

netbsd    amd64

netbsd    arm

openbsd   386

openbsd   amd64

openbsd   arm

plan9     386

plan9     amd64

solaris   amd64

windows   386

windows   amd64


查看完整回答
反对 回复 2021-12-20
?
MMTTMM

TA贡献1869条经验 获得超4个赞

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

这是有效的,因为 ifuintptr是 32 位,^uintptr(0)将是0xffffffff而不是0xffffffffffffffff.

^uint64(0)0xffffffffffffffff无论是 32 位还是 64 位架构,都将始终如此。


查看完整回答
反对 回复 2021-12-20
  • 2 回答
  • 0 关注
  • 489 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号