首页 > 解决方案 > 我应该通过“go build”编译到哪些平台?

问题描述

我有这个 go builder 支持的平台列表:

    "darwin/386",
    "darwin/amd64",
    "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",
    "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",

我正在编写一个脚本来交叉编译我的项目。我首先将它们全部包含在内,但现在我在我的项目中添加了更多代码,但我无法为 Plan9 编译它。我查看了Plan9,发现它真的很旧,不再使用了。所以我的问题是,哪些平台实际使用并且值得编译?

标签: gobuildoperating-systemcross-compilingcpu-architecture

解决方案


要列出所有支持的平台(GOOS/GOARCH组合),请使用以下命令:

go tool dist list

将此列表作为您想要/必须构建的平台的超集,并过滤掉您不需要的平台(例如android)。不要尝试构建到未包含在此列表中的平台,它会失败。

对我来说(Go 1.13.3 linux/amd64)它输出:

aix/ppc64
android/386
android/amd64
android/arm
android/arm64
darwin/386
darwin/amd64
darwin/arm
darwin/arm64
dragonfly/amd64
freebsd/386
freebsd/amd64
freebsd/arm
illumos/amd64
js/wasm
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
netbsd/arm64
openbsd/386
openbsd/amd64
openbsd/arm
openbsd/arm64
plan9/386
plan9/amd64
plan9/arm
solaris/amd64
windows/386
windows/amd64
windows/arm

推荐阅读