All of the following information is based on go version go1.17.1 darwin/amd64.
| GOOS | Out of the Box |
|---|---|
aix |
✅ |
android |
✅ |
darwin |
✅ |
dragonfly |
✅ |
freebsd |
✅ |
hurd |
|
illumos |
✅ |
ios |
✅ |
js |
✅ |
linux |
✅ |
nacl |
|
netbsd |
✅ |
openbsd |
✅ |
plan9 |
✅ |
solaris |
✅ |
windows |
✅ |
zos |
All GOOS values:
"aix", "android", "darwin", "dragonfly", "freebsd", "hurd", "illumos", "ios", "js", "linux", "nacl", "netbsd", "openbsd", "plan9", "solaris", "windows", "zos"
"Out of the box" GOOS values:
"aix", "android", "darwin", "dragonfly", "freebsd", "illumos", "ios", "js", "linux", "netbsd", "openbsd", "plan9", "solaris", "windows"
NOTE
"Out of the box" means the GOOS is supported out of the box, i.e. the stocked
gocommand can build the source code without the help of a C compiler, etc.
NOTE
The full list is based on https://github.com/golang/go/blob/master/src/go/build/syslist.go. The "out of the box" information is based on the result of make1.sh below.
| GOARCH | Out of the Box | 32-bit | 64-bit |
|---|---|---|---|
386 |
✅ | ✅ | |
amd64 |
✅ | ✅ | |
amd64p32 |
✅ | ||
arm |
✅ | ✅ | |
arm64 |
✅ | ✅ | |
arm64be |
✅ | ||
armbe |
✅ | ||
loong64 |
✅ | ||
mips |
✅ | ✅ | |
mips64 |
✅ | ✅ | |
mips64le |
✅ | ✅ | |
mips64p32 |
✅ | ||
mips64p32le |
✅ | ||
mipsle |
✅ | ✅ | |
ppc |
✅ | ||
ppc64 |
✅ | ✅ | |
ppc64le |
✅ | ✅ | |
riscv |
✅ | ||
riscv64 |
✅ | ✅ | |
s390 |
✅ | ||
s390x |
✅ | ✅ | |
sparc |
✅ | ||
sparc64 |
✅ | ||
wasm |
✅ | ✅ |
All GOARCH values:
"386", "amd64", "amd64p32", "arm", "arm64", "arm64be", "armbe", "loong64", "mips", "mips64", "mips64le", "mips64p32", "mips64p32le", "mipsle", "ppc", "ppc64", "ppc64le", "riscv", "riscv64", "s390", "s390x", "sparc", "sparc64", "wasm"
All 32-bit GOARCH values:
"386", "amd64p32", "arm", "armbe", "mips", "mips64p32", "mips64p32le", "mipsle", "ppc", "riscv", "s390", "sparc"
All 64-bit GOARCH values:
"amd64", "arm64", "arm64be", "loong64", "mips64", "mips64le", "ppc64", "ppc64le", "riscv64", "s390x", "sparc64", "wasm"
"Out of the box" GOARCH values:
"386", "amd64", "arm", "arm64", "mips", "mips64", "mips64le", "mipsle", "ppc64", "ppc64le", "riscv64", "s390x", "wasm"
"Out of the box" 32-bit GOARCH values:
"386", "arm", "mips", "mipsle"
"Out of the box" 64-bit GOARCH values:
"amd64", "arm64", "mips64", "mips64le", "ppc64", "ppc64le", "riscv64", "s390x", "wasm"
NOTE
"Out of the box" means the GOARCH is supported out of the box, i.e. the stocked
gocommand can build the source code without the help of a C compiler, etc.
NOTE
The full list is based on https://github.com/golang/go/blob/master/src/go/build/syslist.go. The "out of the box" information is based on the result of make1.sh below. The "32-bit/64-bit" information is based on the result of make2.sh below and https://golang.org/doc/install/source.
| Platform | Out of the Box | 32-bit | 64-bit |
|---|---|---|---|
aix/ppc64 |
✅ | ✅ | |
android/386 |
✅ | ||
android/amd64 |
✅ | ||
android/arm |
✅ | ||
android/arm64 |
✅ | ✅ | |
darwin/amd64 |
✅ | ✅ | |
darwin/arm64 |
✅ | ✅ | |
dragonfly/amd64 |
✅ | ✅ | |
freebsd/386 |
✅ | ✅ | |
freebsd/amd64 |
✅ | ✅ | |
freebsd/arm |
✅ | ✅ | |
freebsd/arm64 |
✅ | ✅ | |
illumos/amd64 |
✅ | ✅ | |
ios/amd64 |
✅ | ✅ | |
ios/arm64 |
✅ | ||
js/wasm |
✅ | ✅ | |
linux/386 |
✅ | ✅ | |
linux/amd64 |
✅ | ✅ | |
linux/arm |
✅ | ✅ | |
linux/arm64 |
✅ | ✅ | |
linux/mips |
✅ | ✅ | |
linux/mips64 |
✅ | ✅ | |
linux/mips64le |
✅ | ✅ | |
linux/mipsle |
✅ | ✅ | |
linux/ppc64 |
✅ | ✅ | |
linux/ppc64le |
✅ | ✅ | |
linux/riscv64 |
✅ | ✅ | |
linux/s390x |
✅ | ✅ | |
netbsd/386 |
✅ | ✅ | |
netbsd/amd64 |
✅ | ✅ | |
netbsd/arm |
✅ | ✅ | |
netbsd/arm64 |
✅ | ✅ | |
openbsd/386 |
✅ | ✅ | |
openbsd/amd64 |
✅ | ✅ | |
openbsd/arm |
✅ | ✅ | |
openbsd/arm64 |
✅ | ✅ | |
openbsd/mips64 |
✅ | ✅ | |
plan9/386 |
✅ | ✅ | |
plan9/amd64 |
✅ | ✅ | |
plan9/arm |
✅ | ✅ | |
solaris/amd64 |
✅ | ✅ | |
windows/386 |
✅ | ✅ | |
windows/amd64 |
✅ | ✅ | |
windows/arm |
✅ | ✅ | |
windows/arm64 |
✅ | ✅ |
All Platform values:
"aix/ppc64", "android/386", "android/amd64", "android/arm", "android/arm64", "darwin/amd64", "darwin/arm64", "dragonfly/amd64", "freebsd/386", "freebsd/amd64", "freebsd/arm", "freebsd/arm64", "illumos/amd64", "ios/amd64", "ios/arm64", "js/wasm", "linux/386", "linux/amd64", "linux/arm", "linux/arm64", "linux/mips", "linux/mips64", "linux/mips64le", "linux/mipsle", "linux/ppc64", "linux/ppc64le", "linux/riscv64", "linux/s390x", "netbsd/386", "netbsd/amd64", "netbsd/arm", "netbsd/arm64", "openbsd/386", "openbsd/amd64", "openbsd/arm", "openbsd/arm64", "openbsd/mips64", "plan9/386", "plan9/amd64", "plan9/arm", "solaris/amd64", "windows/386", "windows/amd64", "windows/arm", "windows/arm64"
All 32-bit Platform values:
"android/386", "android/arm", "freebsd/386", "freebsd/arm", "linux/386", "linux/arm", "linux/mips", "linux/mipsle", "netbsd/386", "netbsd/arm", "openbsd/386", "openbsd/arm", "plan9/386", "plan9/arm", "windows/386", "windows/arm"
All 64-bit Platform values:
"aix/ppc64", "android/amd64", "android/arm64", "darwin/amd64", "darwin/arm64", "dragonfly/amd64", "freebsd/amd64", "freebsd/arm64", "illumos/amd64", "ios/amd64", "ios/arm64", "js/wasm", "linux/amd64", "linux/arm64", "linux/mips64", "linux/mips64le", "linux/ppc64", "linux/ppc64le", "linux/riscv64", "linux/s390x", "netbsd/amd64", "netbsd/arm64", "openbsd/amd64", "openbsd/arm64", "openbsd/mips64", "plan9/amd64", "solaris/amd64", "windows/amd64", "windows/arm64"
"Out of the box" Platform values:
"aix/ppc64", "android/arm64", "darwin/amd64", "darwin/arm64", "dragonfly/amd64", "freebsd/386", "freebsd/amd64", "freebsd/arm", "freebsd/arm64", "illumos/amd64", "ios/amd64", "js/wasm", "linux/386", "linux/amd64", "linux/arm", "linux/arm64", "linux/mips", "linux/mips64", "linux/mips64le", "linux/mipsle", "linux/ppc64", "linux/ppc64le", "linux/riscv64", "linux/s390x", "netbsd/386", "netbsd/amd64", "netbsd/arm", "netbsd/arm64", "openbsd/386", "openbsd/amd64", "openbsd/arm", "openbsd/arm64", "openbsd/mips64", "plan9/386", "plan9/amd64", "plan9/arm", "solaris/amd64", "windows/386", "windows/amd64", "windows/arm", "windows/arm64"
"Out of the box" 32-bit Platform values:
"freebsd/386", "freebsd/arm", "linux/386", "linux/arm", "linux/mips", "linux/mipsle", "netbsd/386", "netbsd/arm", "openbsd/386", "openbsd/arm", "plan9/386", "plan9/arm", "windows/386", "windows/arm"
"Out of the box" 64-bit Platform values:
"aix/ppc64", "android/arm64", "darwin/amd64", "darwin/arm64", "dragonfly/amd64", "freebsd/amd64", "freebsd/arm64", "illumos/amd64", "ios/amd64", "js/wasm", "linux/amd64", "linux/arm64", "linux/mips64", "linux/mips64le", "linux/ppc64", "linux/ppc64le", "linux/riscv64", "linux/s390x", "netbsd/amd64", "netbsd/arm64", "openbsd/amd64", "openbsd/arm64", "openbsd/mips64", "plan9/amd64", "solaris/amd64", "windows/amd64", "windows/arm64"
NOTE
"Out of the box" means the platform is supported out of the box, i.e. the stocked
gocommand can build the source code without the help of a C compiler, etc.
NOTE
The full list is based on the result of the command
go tool dist list. The "out of the box" information is based on the result of make1.sh below. The "32-bit/64-bit" information is based on the result of make2.sh below and https://golang.org/doc/install/source.
android |
darwin |
ios |
js |
linux |
windows |
||
|---|---|---|---|---|---|---|---|
386 |
☑️ (α1) | ✅ | ✅ | 386 |
|||
amd64 |
☑️ (α2) | ✅ | ✅ | ✅ | ✅ | amd64 |
|
amd64p32 |
amd64p32 |
||||||
arm |
☑️ (α2) | ✅ | ✅ | arm |
|||
arm64 |
✅ | ✅ | ☑️ (β) | ✅ | ✅ | arm64 |
|
arm64be |
arm64be |
||||||
armbe |
armbe |
||||||
loong64 |
loong64 |
||||||
mips |
✅ | mips |
|||||
mips64 |
✅ | mips64 |
|||||
mips64le |
✅ | mips64le |
|||||
mips64p32 |
mips64p32 |
||||||
mips64p32le |
mips64p32le |
||||||
mipsle |
✅ | mipsle |
|||||
ppc |
ppc |
||||||
ppc64 |
✅ | ppc64 |
|||||
ppc64le |
✅ | ppc64le |
|||||
riscv |
riscv |
||||||
riscv64 |
✅ | riscv64 |
|||||
s390 |
s390 |
||||||
s390x |
✅ | s390x |
|||||
sparc |
sparc |
||||||
sparc64 |
(γ) | sparc64 |
|||||
wasm |
✅ | wasm |
|||||
android |
darwin |
ios |
js |
linux |
windows |
a |
d |
f |
h |
i |
m |
n |
o |
p |
s |
z |
||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
386 |
✅ | ✅ | ✅ | ✅ | 386 |
|||||||
amd64 |
✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | amd64 |
||||
amd64p32 |
amd64p32 |
|||||||||||
arm |
✅ | ✅ | ✅ | ✅ | arm |
|||||||
arm64 |
✅ | ✅ | ✅ | arm64 |
||||||||
arm64be |
arm64be |
|||||||||||
armbe |
armbe |
|||||||||||
loong64 |
loong64 |
|||||||||||
mips |
mips |
|||||||||||
mips64 |
✅ | mips64 |
||||||||||
mips64le |
mips64le |
|||||||||||
mips64p32 |
mips64p32 |
|||||||||||
mips64p32le |
mips64p32le |
|||||||||||
mipsle |
mipsle |
|||||||||||
ppc |
ppc |
|||||||||||
ppc64 |
✅ | ppc64 |
||||||||||
ppc64le |
ppc64le |
|||||||||||
riscv |
riscv |
|||||||||||
riscv64 |
riscv64 |
|||||||||||
s390 |
s390 |
|||||||||||
s390x |
s390x |
|||||||||||
sparc |
sparc |
|||||||||||
sparc64 |
sparc64 |
|||||||||||
wasm |
wasm |
|||||||||||
a |
d |
f |
h |
i |
m |
n |
o |
p |
s |
z |
a = aix, d = dragonfly, f = freebsd, h = hurd, i = illumos, m = nacl, n = netbsd, o = openbsd, p = plan9, s = solaris, z = zos
✅: Supported (out of the box)
☑️: Supported (with the help of a C compiler, etc.)
(blank): Unsupported
α1:
# command-line-arguments
loadinternal: cannot find runtime/cgo
/usr/local/go/pkg/tool/darwin_amd64/link: running clang failed: exit status 1
clang: warning: argument unused during compilation: '-pie' [-Wunused-command-line-argument]
ld: unknown option: -z
clang: error: linker command failed with exit code 1 (use -v to see invocation)
α2:
# command-line-arguments
loadinternal: cannot find runtime/cgo
/usr/local/go/pkg/tool/darwin_amd64/link: running clang failed: exit status 1
ld: unknown option: -z
clang: error: linker command failed with exit code 1 (use -v to see invocation)
β:
# command-line-arguments
loadinternal: cannot find runtime/cgo
/usr/local/go/pkg/tool/darwin_amd64/link: running clang failed: exit status 1
ld: warning: ignoring file /var/folders/dd/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/T/go-link-xxxxxxxxxx/go.o, building for macOS-x86_64 but attempting to link with file built for unknown-arm64
Undefined symbols for architecture x86_64:
"_main", referenced from:
implicit entry/start for main executable
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
γ:
go tool compile: exit status 2
compile: unknown architecture "sparc64"
NOTE
The
naclGOOS was dropped sincego version 1.14The
amd64p32GOARCH, which is related to thenaclGOOS, was also dropped sincego version 1.14(I believe thatmips64p32andmips64p32leare also related, but I could not find any reference)Reference: https://golang.org/doc/go1.14#nacl
NOTE
The
darwin/386port was dropped sincego version 1.15Reference: https://golang.org/doc/go1.15#darwin
NOTE
On before
go version 1.16:
darwin/amd64means macOSdarwin/arm64means iOSWith the introduction of Apple Silicon (a.k.a. the M1 chip), on
go version 1.16or later:
darwin/amd64means macOS with Intel CPUdarwin/arm64updates to mean macOS with Apple Silicon CPUios/amd64is the new port for iOS Simulator on macOS with Intel CPUios/arm64is the new port for iOSReference: https://golang.org/doc/go1.16#darwin