Благодаря доброй и терпеливой помощи голанг-орехов рецепт такой:
1) Нужно скомпилировать компилятор Go для разных целевых платформ и архитектур. Это делается из папки src в установке go. В моем случае установка Go находится в нем, /usr/local/go
поэтому для компиляции компилятора нужно выпустить make
утилиту. Перед тем как это сделать, вам нужно знать некоторые предостережения.
При кросс-компиляции возникает проблема с библиотекой CGO, поэтому необходимо отключить библиотеку CGO.
Компиляция выполняется путем изменения местоположения на исходный каталог, поскольку компиляция должна выполняться в этой папке
cd /usr/local/go/src
затем скомпилируйте компилятор Go:
sudo GOOS=windows GOARCH=386 CGO_ENABLED=0 ./make.bash --no-clean
Вам нужно повторить этот шаг для каждой ОС и каждой архитектуры, которые вы хотите кросс-компилировать, изменив параметры GOOS и GOARCH.
Если вы работаете в пользовательском режиме, как я, sudo необходимо, потому что компилятор Go находится в системном каталоге. В противном случае вам нужно будет войти в систему как суперпользователь. На Mac вам может потребоваться включить / настроить доступ SU (по умолчанию он недоступен), но если вам удалось установить Go, возможно, у вас уже есть root-доступ.
2) После того, как вы построили все кросс-компиляторы, вы можете с радостью скомпилировать свое приложение, используя, например, следующие настройки:
GOOS=windows GOARCH=386 go build -o appname.exe appname.go
GOOS=linux GOARCH=386 CGO_ENABLED=0 go build -o appname.linux appname.go
Измените GOOS и GOARCH на цели, которые вы хотите построить.
Если у вас возникнут проблемы с CGO, включите CGO_ENABLED = 0 в командную строку. Также обратите внимание, что двоичные файлы для Linux и Mac не имеют расширения, поэтому вы можете добавить расширение, чтобы иметь разные файлы. -o переключатель указывает Go сделать выходной файл похожим на старые компиляторы для c / c ++, таким образом, использованное выше имя приложения. linux может быть любым другим расширением.