Ответ 1
Что вам нужно сделать, это перестроить библиотеку и среду выполнения для linux-amd64. Вы можете сделать это следующим образом:
- Найдите корень вашей установки Go (если вы не знаете, где это, работает
which go
может помочь - двоичный файл часто устанавливается вместе с остальными источниками). -
cd
в каталогsrc
- Запустите
GOOS=linux GOARCH=amd64 ./make.bash --no-clean
(илиGOOS=linux GOARCH=amd64 bash make.bash --no-clean
, еслиmake.bash
не является исполняемым). Это приведет к восстановлению библиотеки и времени выполнения с использованием указанной ОС и архитектуры.
Как только вы это сделаете, вы можете создать пакет go или binary для этой архитектуры, используя GOOS=linux GOARCH=amd64 go build
. Вы можете следовать тем же инструкциям для других архитектур и операционных систем.
Изменить (08/13/15):
Как и в случае Go 1.5, кросс-компиляция намного проще. Поскольку время выполнения написано в Go, нет необходимости устанавливать что-либо, чтобы иметь возможность перекрестно скомпилировать. Теперь вы можете просто запустить GOOS=<os> GOARCH=<arch> go build
из установки Vanilla Go, и она будет работать.
Однако есть одно исключение. Если вы используете cgo, вам все равно нужно заранее установить материал. И вам нужно будет сообщить инструменту, что вы хотите включить кросс-компиляцию cgo, установив переменную среды CGO_ENABLED
в 1
. Итак, если быть точным:
-
cd
в каталогsrc
вашей установки Go (см. инструкции выше). - Запустить
CGO_ENABLED=1 GOOS=<os> GOARCH=<arch> ./make.bash --no-clean
- Запустите
CGO_ENABLED=1 go build
, чтобы создать проект. Важно, чтобы вы указывалиCGO_ENABLED=1
даже при компиляции.