2020-08-03 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