Si je comprends bien, GOOS
est déterminé lors de la compilation du code source.
Pour mieux prendre en charge plusieurs systèmes d'exploitation, je suis intéressé par ce que GOOS
pourrait être.
Bien sûr, il pourrait y avoir des possibilités infinies, car Go est ouvert. Donc ce que je veux vraiment, c'est une "liste commune".
Les valeurs connues sont:
windows
linux
darwin
ou freebsd
ou unix
? Je sais qu'au moins l'un d'eux doit exister.Notez que ces valeurs sont définies dans src/go/build/syslist.go
.
Avec Go 1.5 (Q3 2015), GOARCH
deviendra beaucoup plus complet.
Voir commit 1eebb91 par Minux Ma (minux
)
go/build
: réserveGOARCH
valeurs pour tous architectures courantesChaque fois que nous introduisons un nouveau
GOARCH
, les anciennes versions de Go ne les reconnaissent pas et cela cause des problèmes à nos utilisateurs et à nous (nous devons ajouter des balises de construction inutiles).Go 1.5 a introduit jusqu'à présent trois nouveaux GOARCH:
arm64 ppc64 ppc64le
, nous pouvons prendre le temps d'introduire des GOARCH pour toutes les architectures courantes que Go pourrait prendre en charge à l'avenir pour éviter le problème.
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)
La liste est toujours en cours de révision dans Change 9644 , avec des commentaires comme:
Je ne m'embêterais pas avec Itanium. C'est fondamentalement une architecture morte.
De plus, il est si difficile d'écrire un compilateur pour cela que je ne peux vraiment pas le voir, sauf comme un travail d'amour, et personne n'aime l'Itanium.
La documentation officielle maintenant (GO 1.5+ Q3 2015) reflète cette liste complète.
Mise à jour 2018: comme documenté dans Giorgos Oikonomo 's answer , Go 1.7 (Q1 2016) a introduit lego tool dist list
.
Voir commit c3ecded : il corrige problème 1227 ouvert au troisième trimestre 2015:
Pour faciliter l'écriture d'outils pour la compilation croisée, il serait bon d'obtenir par programmation les combinaisons possibles de GOOS et GOARCH.
Cela a été implémenté dans CL 19837
cmd/dist
: introduire la sous-commandelist
pour répertorier toutes les plateformes prises en charge
Vous pouvez lister en texte brut ou en json:
> go tool dist list -json
[
{
"GOOS": "Android",
"GOARCH": "386",
"CgoSupported": true
},
...
]
Je pense que vous recherchez cette liste de combinaisons possibles de GOOS et GOARCH, dans cette section:
http://golang.org/doc/install/source#environment
$ GOOS et $ GOARCH Nom du système d'exploitation cible et de l'architecture de compilation. Ces valeurs par défaut sont respectivement les valeurs de $ GOHOSTOS et $ GOHOSTARCH (décrites ci-dessous).
Les choix pour $ GOOS sont darwin (Mac OS X 10.8 et supérieur et iOS), libellule, freebsd, linux, netbsd, openbsd, plan9, solaris et windows. Les choix pour $ GOARCH sont AMD64 (64 bits x86, le port le plus mature), 386 (32 bits x86), arm (32 bits ARM), arm64 (64 bits ARM), ppc64le (PowerPC 64 bits, petit -endian), ppc64 (PowerPC 64 bits, big-endian), mips64le (MIPS 64-bit, little-endian) et mips64 (MIPS 64-bit, big-endian). mipsle (MIPS 32 bits, petit-boutien) et mips (MIPS 32 bits, gros-boutien).
Les combinaisons valides de $ GOOS et $ GOARCH sont:
$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
Vous pouvez voir la liste des plateformes prises en charge en exécutant:
go tool dist list
et cela s'imprimera (selon la version 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
Et la documentation officielle de l'outil:
https://godoc.org/github.com/golang/go/src/cmd/dist
Pour utiliser la compilation croisée:
GOOS=darwin GOARCH=386 go build main.go