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

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

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

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

GOOS GOARCH
aixppc64
android386
androidarm64
androidarm
androidamd64
darwin386
darwinamd64
darwinarm
darwinarm64
dragonflyamd64
freebsdarm
freebsd386
freebsdarm64
freebsdamd64
illumosamd64
jswasm
linuxmips64
linuxmips64le
linuxppc64le
linuxamd64
linuxmipsle
linuxarm
linuxppc64
linuxriscv64
linuxmips
linux386
linuxarm64
linuxs390x
netbsdarm
netbsdarm64
netbsdamd64
netbsd386
openbsdarm
openbsdamd64
openbsdarm64
openbsd386
plan9386
plan9amd64
plan9arm
solarisamd64
windows386
windowsamd64
windowsarm

Пример использования:
        
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