请注意,这些值的定义如下:
-
src/go/build/syslist.go https://github.com/golang/go/blob/master/src/go/build/syslist.go, and
-
doc/install/source#environment https://go.dev/doc/install/source#environment.
使用 Go 1.5(2015 年第 3 季度),GOARCH
会变成much更完整。
See 提交 1eebb91 https://github.com/golang/go/commit/1eebb91a5828c26532125b9464c92f721cd79d0f by 米努克斯马(minux) https://github.com/minux
go/build
: 预订GOARCH
值all通用架构
每当我们推出新产品时GOARCH
,较旧的 Go 版本无法识别它们,这会给我们的用户和我们带来麻烦(我们需要添加不必要的构建标签)。
到目前为止,Go 1.5 引入了三个新的 GOARChe:arm64 ppc64 ppc64le
,我们可以花点时间为 Go 未来可能支持的所有常见架构引入 GOARChes 来避免这个问题。
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)
该名单仍在审核中变更9644 https://go-review.googlesource.com/#/c/9644/,评论如下:
我不会打扰安腾。它基本上是一个死架构。
另外,为它编写一个编译器是如此困难,以至于我真的看不到它的发生,除非是出于热爱,而且没有人喜欢安腾。
The 官方文档 https://golang.org/doc/install/source#environment现在(GO 1.5+ Q3 2015)反映了已完成的列表。
2018 年更新:如记录乔治·奥科诺莫 https://stackoverflow.com/users/1199408/giorgos-oikonomou's answer https://stackoverflow.com/a/50117892/6309,Go 1.7(2016 年第一季度)引入了
go tool dist list
命令。
See 提交c3ecded https://github.com/golang/go/commit/c3ecded729214abf8a146902741cd6f9d257f68c: 修复了问题 12270 https://github.com/golang/go/issues/122702015 年第三季度开业:
为了更轻松地编写交叉编译工具,最好以编程方式获取 GOOS 和 GOARCH 的可能组合。
这是在CL 19837 https://go-review.googlesource.com/c/go/+/19837
cmd/dist
: 介绍list
列出所有支持平台的子命令
您可以以纯文本或 json 形式列出:
> go tool dist list -json
[
{
"GOOS": "android",
"GOARCH": "386",
"CgoSupported": true
},
...
]
As 马克·贝茨发推文 https://twitter.com/markbates/status/1177326527287107585:
奖励:列输出格式正确以供显示:
go tool dist list | column -c 75 | column -t