如果我理解正确,则在编译源代码时确定GOOS
。
为了更好地支持多种操作系统,我对GOOS
可能感兴趣。
当然,由于Go是开源的,因此可能存在无限的可能性。因此,我真正想要的是一个“通用列表”。
已知值为:
windows
linux
darwin
或freebsd
或unix
吗?我知道其中至少必须存在一个。 最佳答案
请注意,这些值在 src/go/build/syslist.go
中定义。
在Go 1.5(2015年第三季度)中,GOARCH
将变得更加完整。
参见commit 1eebb91的Minux Ma ( minux
)go/build
:为所有常见架构保留GOARCH
值
每当我们引入新的GOARCH
时,旧的Go版本将无法识别它们,这给我们和我们的用户都造成了麻烦(我们需要添加不必要的构建标记)。
到目前为止,Go 1.5已经引入了三个新的GOARCH:arm64 ppc64 ppc64le
,我们可以花些时间为Go将来可能支持的所有常见架构引入GOARCH,以避免出现此问题。
const goosList = "android darwin dragonfly freebsd linux nacl \
netbsd openbsd plan9 solaris windows "
const goarchList = "386 amd64 amd64p32 arm arm64 ppc64 ppc64le \
mips mipsle mips64 mips64le mips64p32 mips64p32le \ # (new)
ppc s390 s390x sparc sparc64 " # (new)
该列表仍在Change 9644中进行审核,评论如下:我不会理会Itanium。基本上,它是一个死的架构。
另外,很难为其编写编译器,以至于我真的看不到它的发生,除非是出于爱的劳动,而且没有人喜欢Itanium。
现在的official documentation(GO 1.5+ Q3 2015)反映了已完成的列表。
更新2018:如Giorgos Oikonomou的answer中所述,Go 1.7(2016年第一季度)引入了
go tool dist list
命令。请参阅commit c3ecded:它修复了2015年第三季度打开的issue 12270:
为了更轻松地编写用于交叉编译的工具,最好以编程方式获取GOOS和GOARCH的可能组合。
这是在CL 19837中实现的
cmd/dist
:引入list
子命令以列出所有支持的平台您可以用纯文本或json列出:
> go tool dist list -json
[
{
"GOOS": "android",
"GOARCH": "386",
"CgoSupported": true
},
...
]
作为Mark Bates tweeted:奖励:列输出的格式正确,可以显示:
go tool dist list | column -c 75 | column -t