亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何確定程序是在 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 關注
  • 363 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號