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