うまくいけば、ソースコードをコンパイルするときにGOOS
が決定されます。
複数のOSをより適切にサポートするために、GOOS
がどのようなものになるかに興味があります。
もちろん、Goはオープンソースであるため、無限の可能性があります。本当に欲しいのは「共通リスト」です。
既知の値は次のとおりです。
windows
linux
darwin
またはfreebsd
またはunix
?それらの少なくとも1つが存在する必要があることを知っています。これらの値は src/go/build/syslist.go
。
Go 1.5(2015年第3四半期)では、GOARCH
はmuchより完全になります。
を参照 commit 1eebb91 by Minux Ma(minux
)
go/build
:GOARCH
値をall共通アーキテクチャ用に予約新しい
GOARCH
を導入するたびに、古いGoリリースはそれらを認識せず、ユーザーと私たちの両方に問題を引き起こします(不要なビルドタグを追加する必要があります)。Go 1.5では、これまでに3つの新しいGOARCHeが導入されています。
arm64 ppc64 ppc64le
、Goが問題を回避するために将来サポートする可能性があるすべての一般的なアーキテクチャにGOARCHeを導入するために時間をかけることができます。
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を気にしません。それは基本的に死んだアーキテクチャです。
さらに、そのためのコンパイラを書くのは非常に難しいので、愛の労働として以外は実際にそれを見ることができず、誰もItaniumを愛していません。
official documentation now(GO 1.5+ Q3 2015)は、完成したリストを反映しています。
アップデート2018: Giorgos Oikonomo の answer に記載されているように、Go 1.7(2016年第1四半期)ではgo tool dist list
コマンド。
を参照 commit c3ecded :修正 issue 1227 2015年第3四半期にオープン:
クロスコンパイル用のツールを簡単に作成するには、GOOSとGOARCHの可能な組み合わせをプログラムで取得するのが良いでしょう。
これは CL 19837 で実装されました
cmd/dist
:サポートされているすべてのプラットフォームを一覧表示するlist
サブコマンドを導入
プレーンテキストまたはjsonでリストできます。
> go tool dist list -json
[
{
"GOOS": "Android",
"GOARCH": "386",
"CgoSupported": true
},
...
]
このセクションでは、GOOSとGOARCHの可能な組み合わせのリストを探していると思います。
http://golang.org/doc/install/source#environment
$ GOOSおよび$ GOARCHターゲットオペレーティングシステムとコンパイルアーキテクチャの名前。これらのデフォルトは、それぞれ$ GOHOSTOSと$ GOHOSTARCHの値です(以下で説明)。
$ GOOSの選択肢は、darwin(Mac OS X 10.8以降およびiOS)、dragonfly、freebsd、linux、netbsd、openbsd、plan9、solaris、windowsです。 $ GOARCHの選択肢は、AMD64(64ビットx86、最も成熟したポート)、386(32ビットx86)、arm(32ビットARM)、arm64(64ビットARM)、ppc64le(PowerPC 64ビット、少し) -endian)、ppc64(PowerPC 64ビット、ビッグエンディアン)、mips64le(MIPS 64ビット、リトルエンディアン)、およびmips64(MIPS 64ビット、ビッグエンディアン)。 mipsle(MIPS 32ビット、リトルエンディアン)、およびmips(MIPS 32ビット、ビッグエンディアン)。
$ 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
次を実行すると、サポートされているプラットフォームのリストを表示できます。
go tool dist list
これは印刷されます(Goのバージョンによって異なります):
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