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 2-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 2-make1.sh below. The "32-bit/64-bit" information is based on the result of 4-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 2-make1.sh below. The "32-bit/64-bit" information is based on the result of 4-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