web-dev-qa-db-ja.com

すべての可能なGOOS値?

うまくいけば、ソースコードをコンパイルするときにGOOSが決定されます。

複数のOSをより適切にサポートするために、GOOSがどのようなものになるかに興味があります。

もちろん、Goはオープンソースであるため、無限の可能性があります。本当に欲しいのは「共通リスト」です。

既知の値は次のとおりです。

  • windows
  • linux
  • darwinまたはfreebsdまたはunix?それらの少なくとも1つが存在する必要があることを知っています。
48
liuyanghejerry

これらの値は src/go/build/syslist.go

Go 1.5(2015年第3四半期)では、GOARCHmuchより完全になります。
を参照 commit 1eebb91 by Minux Ma(minux

go/buildGOARCH値を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 Oikonomoanswer に記載されているように、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
        },
        ...
]
52
VonC

このセクションでは、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
37
Eve Freeman

次を実行すると、サポートされているプラ​​ットフォームのリストを表示できます。

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
16
georgeok