小编典典

所有可能的GOOS值?

go

如果我做对了,GOOS确定何时编译源代码。

为了更好地支持多种操作系统,我对GOOS可能的功能很感兴趣。

当然,由于Go是开源的,因此可能存在无限的可能性。因此,我真正想要的是一个“通用列表”。

已知值为:

  • windows
  • linux
  • darwinfreebsdunix?我知道其中至少必须存在一个。

阅读 322

收藏
2020-07-02

共1个答案

小编典典

请注意,这些值在中定义src/go/build/syslist.go

随着围棋1.5(Q3 2015年),GOARCH将成为 很多 更加完整。
提交1eebb91Minux马(minux

go/buildGOARCH所有 通用架构保留值

每当我们引入新的GOARCH,较旧的Go发行版都不会识别它们时,这会给我们和我们的用户造成麻烦(我们需要添加不必要的构建标记)。

到目前为止arm64 ppc64 ppc64le,Go 1.5引入了三个新的GOARCH
::我们可以花一些时间为将来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。

现在的 正式文档
(2015年第三季度,GO 1.5+)反映了该完整列表。


2018年更新:如Giorgos Oikonomou,Go1.7(2016年第一季度)引入了该 go tool dist list 命令。
参见commitc3ecded:它修复了2015年第三季度打开的问题12270

为了更轻松地编写用于交叉编译的工具,最好以编程方式获取GOOS和GOARCH的可能组合。

这是在CL 19837中实现的

cmd/dist:引入list子命令以列出所有支持的平台

您可以用纯文本或json列出:

> go tool dist list -json
[
        {
                "GOOS": "android",
                "GOARCH": "386",
                "CgoSupported": true
        },
        ...
]

正如马克·贝茨啾啾

奖励:列输出的格式正确,可以显示:

go tool dist list | column -c 75 | column -t
2020-07-02