Кросс-компиляция в Go

Вся ниже приведённая информация касается версий Go младше 1.5. Начиная с версии 1.5 достаточно указать корректные переменные окружения GOOS и GOARCH

Что бы не смешивать основной SDK и SDK для разных платформ можно вынести его в отдельный каталог.

  mkdir ~/go-cross
  cd ~/go-cross
  wget https://storage.googleapis.com/golang/go1.4.2.linux-amd64.tar.gz
  tar xvf go1.4.2.linux-amd64.tar.gz

Создадим файл ~/go-cross/workspace.sh что-бы быстро переключаться к нашему выделенному workspace

#!/bin/sh
export GOROOT=$HOME/go-cross/go/
export GOPATH=$HOME/go-cross
export PATH=$GOROOT/bin:$GOPATH/bin:$PATH

Переключение делается так (внимание на точку!):

. ~/go-cross/workspace.sh

Можем собрать тулчейн под нужную платформу вручную:

  cd $(go env GOROOT)/src
  GOOS=linux GOARCH=arm ./make.bash --no-clean

или воспользоваться автоматическим сборщиком под все доступные платформы:

  go get github.com/mitchellh/gox
  gox -build-toolchain
  cd ~/go-cross/src/hello-world # Здесь типа наш проект
  gox

См. так же: http://habrahabr.ru/post/249449/