Golang заметки - Кросс-платформенная компиляция

Очень часто бывает так, что приложение разрабатывается в одной ОС, а эксплуатироваться должно в другой, данную проблему решает кросс-платформенная компиляция.

Начиная с версии 1.5 компилятор языка Go начал поддерживать кросс-платформенную компиляцию из коробки. Для этого необходимо в переменных окружения GOARCH и GOOS указать целевую архитектуру и ОС.

Допустимыми комбинациями GOOS и GOARCH являются:

GOOS GOARCH
aix ppc64
android 386
android arm64
android arm
android amd64
darwin 386
darwin amd64
darwin arm
darwin arm64
dragonfly amd64
freebsd arm
freebsd 386
freebsd arm64
freebsd amd64
illumos amd64
js wasm
linux mips64
linux mips64le
linux ppc64le
linux amd64
linux mipsle
linux arm
linux ppc64
linux riscv64
linux mips
linux 386
linux arm64
linux s390x
netbsd arm
netbsd arm64
netbsd amd64
netbsd 386
openbsd arm
openbsd amd64
openbsd arm64
openbsd 386
plan9 386
plan9 amd64
plan9 arm
solaris amd64
windows 386
windows amd64
windows arm

Пример использования:

package main

import "fmt"

func main() {
    fmt.Println("Hello World")
}

Собираем под Windows с 386 архитектурой:

GOOS=windows GOARCH=386 go build main.go

Проверяем правильно ли собралось:

$ file main.exe
main.exe: PE32 executable (console) Intel 80386 (stripped to external PDB), for MS Windows

Made with Emacs 28.2 (Org mode 9.5.5)