如果我做对了,GOOS确定何时编译源代码。
GOOS
为了更好地支持多种操作系统,我对GOOS可能的功能很感兴趣。
当然,由于Go是开源的,因此可能存在无限的可能性。因此,我真正想要的是一个“通用列表”。
已知值为:
windows
linux
darwin
freebsd
unix
请注意,这些值在中定义src/go/build/syslist.go。
src/go/build/syslist.go
随着围棋1.5(Q3 2015年),GOARCH将成为 很多 更加完整。 见提交1eebb91由Minux马(minux)
GOARCH
minux
go/build:GOARCH为 所有 通用架构保留值 每当我们引入新的GOARCH,较旧的Go发行版都不会识别它们时,这会给我们和我们的用户造成麻烦(我们需要添加不必要的构建标记)。 到目前为止arm64 ppc64 ppc64le,Go 1.5引入了三个新的GOARCH ::我们可以花一些时间为将来Go可能支持的所有常见架构引入GOARCH,以避免出现此问题。
go/build
每当我们引入新的GOARCH,较旧的Go发行版都不会识别它们时,这会给我们和我们的用户造成麻烦(我们需要添加不必要的构建标记)。
到目前为止arm64 ppc64 ppc64le,Go 1.5引入了三个新的GOARCH ::我们可以花一些时间为将来Go可能支持的所有常见架构引入GOARCH,以避免出现此问题。
arm64 ppc64 ppc64le
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。
现在的 正式文档 (2015年第三季度,GO 1.5+)反映了该完整列表。
2018年更新:如Giorgos Oikonomou,Go1.7(2016年第一季度)引入了该 go tool dist list 命令。 参见commitc3ecded:它修复了2015年第三季度打开的问题12270:
go tool dist list
为了更轻松地编写用于交叉编译的工具,最好以编程方式获取GOOS和GOARCH的可能组合。
这是在CL 19837中实现的
cmd/dist:引入list子命令以列出所有支持的平台
cmd/dist
list
您可以用纯文本或json列出:
> go tool dist list -json [ { "GOOS": "android", "GOARCH": "386", "CgoSupported": true }, ... ]
正如马克·贝茨啾啾:
奖励:列输出的格式正确,可以显示: go tool dist list | column -c 75 | column -t
奖励:列输出的格式正确,可以显示:
go tool dist list | column -c 75 | column -t