Подтвердить что ты не робот

Все возможные значения GOOS?

Если я правильно понял, GOOS определяется при компиляции исходного кода.

Чтобы лучше поддерживать несколько ОС, мне интересно, что может быть GOOS.

Конечно, могут быть бесконечные возможности, так как Go раскрывается. Так что я действительно хочу, это "общий список".

Известные значения:

  • windows
  • linux
  • darwin или freebsd или unix? Я знаю, что хотя бы один из них должен существовать.
4b9b3361

Ответ 1

Обратите внимание, что эти значения определены в src/go/build/syslist.go.

С Go 1.5 (3 квартал 2015 года) GOARCH станет намного более полным.
Смотрите коммит 1eebb91 от Minux Ma (minux)

go/build: зарезервировать значения GOARCH для всех распространенных архитектур

Всякий раз, когда мы представляем новый GOARCH, старые версии Go не распознают их, и это создает проблемы как для наших пользователей, так и для нас (нам нужно добавить ненужные теги сборки).

Go 1.5 представил три новых GOARCH: arm64 ppc64 ppc64le, мы можем потратить время на внедрение GOARCH для всех распространенных архитектур, которые Go может поддерживать в будущем, чтобы избежать этой проблемы.

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.

официальная документация сейчас (GO 1. 5+ 3-й квартал 2015 года) отражает этот заполненный список.


Обновление 2018 года: как описано в Giorgos Oikonomouanswer, в Go 1.7 (1-й квартал 2016 года) представлен
go tool dist list команда.
См. commit c3ecded: исправлена проблема 12270, открытая в третьем квартале 2015 года:

Чтобы упростить написание инструментов для кросс-компиляции, было бы полезно программно получить возможные комбинации GOOS и GOARCH.

Это было реализовано в CL 19837

cmd/dist: введите подкоманду list для просмотра списка всех поддерживаемых платформ

Вы можете перечислить в виде обычного текста или в формате JSON:

> go tool dist list -json
[
        {
                "GOOS": "android",
                "GOARCH": "386",
                "CgoSupported": true
        },
        ...
]

Как Марк Бейтс написал в Твиттере:

Бонус: вывод столбца правильно отформатирован для отображения:

go tool dist list | column -c 75 | column -t

Ответ 2

Я думаю, что вы ищете этот список возможных комбинаций 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 и окна. Выбор для GOARCH - amd64 (64-разрядный x86, самый зрелый порт), 386 (32-разрядный x86), рычаг (32-разрядная ARM), arm64 (64-разрядная ARM), ppc64le (PowerPC 64-bit, little-endian), ppc64 (PowerPC 64-бит, big-endian), mips64le (MIPS 64-bit, little-endian) и mips64 (MIPS 64-бит, большой обратный порядок байт). mipsle (MIPS 32-bit, little-endian) и mips (MIPS 32-битный, big-endian).

Допустимыми комбинациями $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

Ответ 3

Вы можете увидеть список поддерживаемых платформ, выполнив:

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