一尘不染

所有可能的 GOOS 值?

go

如果我猜对了,GOOS是在编译源代码时确定的。

为了更好地支持多个操作系统,我对GOOS可能是什么感兴趣。

当然,它可能有无限的可能性,因为 Go 是开源的。所以我真正想要的是一个“通用列表”。

已知值是:

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

阅读 216

收藏
2021-12-28

共1个答案

一尘不染

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

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

`go/build:GOARCH为所有常见架构保留值

每当我们引入一个新的GOARCH、旧的 Go 版本时都不会识别它们,这会给我们的用户和我们带来麻烦(我们需要添加不必要的构建标签)。

到目前为止arm64 ppc64 ppc64le,Go 1.5 引入了三个新的 GOARCHe:,我们可以花时间为 Go 将来可能支持的所有常见架构引入 GOARCHe,以避免出现问题。

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。

现在的官方文档(GO 1.5+ Q3 2015)反映了完整的列表。


2018 年更新:如Giorgos Oikonomou回答中所述,Go 1.7(2016 年第一季度)引入了该
go tool dist list命令。
请参阅提交 c3ecded:它修复了2015 年第三季度开放的问题 12270

为了更容易地编写交叉编译工具,最好以编程方式获得 GOOS 和 GOARCH 的可能组合。

这是在CL 19837 中实现的]

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

您可以以纯文本或 json 格式列出:

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

正如马克·贝所说:

奖励:列输出格式正确以供显示:

golang go tool dist list | column -c 75 | column -t

2021-12-28