如果我做对了,编译源代码时会确定GOOS
。
为了更好地支持多个操作系统,我对GOOS
可能是什么感兴趣。
当然,它可能有无限的可能性,因为Go是开源的。所以我真正想要的是一个“共同列表”。
已知值为:
windows
linux
darwin
或freebsd
或unix
?我知道其中至少有一个必须存在。答案 0 :(得分:49)
请注意,这些值在src/go/build/syslist.go
中定义。
使用Go 1.5(2015年第3季度),GOARCH
将变得更多更完整。
请commit 1eebb91
minux
)
go/build
:为所有常见架构保留GOARCH
个值每当我们引入新的
到目前为止,Go 1.5已经引入了三个新的GOARCH:GOARCH
时,较旧的Go版本都无法识别它们,这会给我们的用户和我们带来麻烦(我们需要添加不必要的构建代码)。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而烦恼。它基本上是一个死的架构 另外,编写一个编译器是如此困难,以至于我真的无法看到它的发生,除非作为爱的劳动,没有人喜欢安腾。
现在official documentation(GO 1.5 + Q3 2015)反映了完整列表。
2018年更新:正如Giorgos Oikonomou answer中所述,Go 1.7(2016年第一季度)引入了
go tool dist list
命令。
请参阅commit c3ecded:它修复了2015年第3季度开放的issue 12270:
为了更容易编写工具来进行交叉编译,最好以编程方式获得GOOS和GOARCH的可能组合。
这是在CL 19837
中实施的
cmd/dist
:引入list
子命令列出所有支持的平台
您可以用纯文本或json列出:
> go tool dist list -json
[
{
"GOOS": "android",
"GOARCH": "386",
"CgoSupported": true
},
...
]
答案 1 :(得分:34)
我认为你正在寻找这个可能的GOOS和GOARCH组合列表,在本节中:
http://golang.org/doc/install/source#environment
$ GOOS和$ GOARCH 目标操作系统的名称和 编译架构。这些默认值为$ GOHOSTOS和 $ GOHOSTARCH分别(如下所述)。
$ GOOS的选择是darwin(Mac OS X 10.8及以上版本和iOS版), 蜻蜓,freebsd,linux,netbsd,openbsd,plan9,solaris和 视窗。 $ GOARCH的选择是amd64(64位x86,最成熟的 端口),386(32位x86),arm(32位ARM),arm64(64位ARM),ppc64le (PowerPC 64位,小端),ppc64(PowerPC 64位,big-endian), mips64le(MIPS 64位,little-endian)和mips64(MIPS 64位, 大端)。 mipsle(MIPS 32位,little-endian)和mips(MIPS 32位,big-endian)。
$ GOOS和$ GOARCH的有效组合是:
$GOOS $GOARCH android arm darwin 386 darwin amd64 darwin arm darwin arm64 dragonfly amd64 freebsd 386 freebsd amd64 freebsd arm linux 386 linux amd64 linux arm linux arm64 linux ppc64 linux ppc64le linux mips linux mipsle linux mips64 linux mips64le netbsd 386 netbsd amd64 netbsd arm openbsd 386 openbsd amd64 openbsd arm plan9 386 plan9 amd64 solaris amd64 windows 386 windows amd64
答案 2 :(得分:15)
您可以通过运行以下方式查看支持的平台列表:
$ go tool dist list
android/386
android/amd64
android/arm
android/arm64
darwin/386
darwin/amd64
darwin/arm
darwin/arm64
dragonfly/amd64
freebsd/386
freebsd/amd64
freebsd/arm
linux/386
linux/amd64
linux/arm
linux/arm64
linux/mips
linux/mips64
linux/mips64le
linux/mipsle
linux/ppc64
linux/ppc64le
linux/s390x
nacl/386
nacl/amd64p32
nacl/arm
netbsd/386
netbsd/amd64
netbsd/arm
openbsd/386
openbsd/amd64
openbsd/arm
plan9/386
plan9/amd64
plan9/arm
solaris/amd64
windows/386
windows/amd64
该工具的官方文档:
https://godoc.org/github.com/golang/go/src/cmd/dist
交叉编译使用:
GOOS=darwin GOARCH=386 go build main.go