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
go
command 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
go
command 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
go
command 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
nacl
GOOS was dropped sincego version 1.14
The
amd64p32
GOARCH, which is related to thenacl
GOOS, was also dropped sincego version 1.14
(I believe thatmips64p32
andmips64p32le
are also related, but I could not find any reference)Reference: https://golang.org/doc/go1.14#nacl
NOTE
The
darwin/386
port was dropped sincego version 1.15
Reference: https://golang.org/doc/go1.15#darwin
NOTE
On before
go version 1.16
:
darwin/amd64
means macOSdarwin/arm64
means iOSWith the introduction of Apple Silicon (a.k.a. the M1 chip), on
go version 1.16
or later:
darwin/amd64
means macOS with Intel CPUdarwin/arm64
updates to mean macOS with Apple Silicon CPUios/amd64
is the new port for iOS Simulator on macOS with Intel CPUios/arm64
is the new port for iOSReference: https://golang.org/doc/go1.16#darwin
Thanx for creating that gist! I need to start to remember this 😅