Как перебрать компиляцию из Windows в Linux?

Я установил Go 1.2 на машину Windows, написал макетную программу и установил переменные среды GOARCH и GOOS в "AMD64" и "linux" соответственно.

Когда я выдаю команду "go build", я получаю сообщение об ошибке:

go build runtime: linux/amd64 must be bootstrapped using make.bat

Что это значит?

Ответы

Ответ 1

Он сообщает вам, что для его создания необходимы все инструменты, которые вы могли бы использовать.

Если ваши GOON GOON - это amd64, вы можете "собрать" все необходимые инструменты, запустив эти небольшие пакетные программы:

set GOARCH=amd64
set GOOS=linux
go tool dist install -v pkg/runtime
go install -v -a std

Если это удастся, вы сможете сделать то, что вы описали (просто используйте amd64, а не AMD64 - он чувствителен к регистру).

Если ваш оконный код GOARCH равен 386, вам нужно сначала создать свои 386 инструментов. Вам нужно будет скачать mingw gcc для этого. Сделайте то, что сказал пользователь2714852.

Здесь https://golang.org/wiki/WindowsCrossCompiling аналогичные инструкции для Linux, возможно, вы найдете их полезными.

Алекс

Ответ 2

У меня возникли серьезные проблемы с построением linux из окон, в конце концов, это было довольно просто. Я бы прокомментировал сообщение Alex, но я не могу, поскольку я являюсь stackoverflow newb.

Как сказал alex, установите переменные среды . Этот должен быть выполнен как администратор (например, щелкните правой кнопкой мыши ярлык командной строки или "Powershell" и нажмите "Запуск от имени администратора" )

set GOARCH=amd64
set GOOS=linux

Если вы не выполняете его как администратор, переменные не будут вступать в силу, и вы просто создадите его для ОС и архитектуры, в которых вы сейчас находитесь.

Я нашел, что всегда хорошо проверять ваши переменные окружения, запуская go env, который дает вам список текущих переменных среды go

go env
set GOARCH=amd64
set GOBIN=
set GOEXE=
set GOHOSTARCH=amd64
set GOHOSTOS=windows
set GOOS=linux
set GOPATH=T:\Projects\gopath
set GORACE=
set GOROOT=C:\Go
set GOTOOLDIR=C:\Go\pkg\tool\windows_amd64
set GCCGO=gccgo
set CC=gcc
set GOGCCFLAGS=-fPIC -m64 -fmessage-length=0
set CXX=g++
set CGO_ENABLED=0
set PKG_CONFIG=pkg-config
set CGO_CFLAGS=-g -O2
set CGO_CPPFLAGS=
set CGO_CXXFLAGS=-g -O2
set CGO_FFLAGS=-g -O2
set CGO_LDFLAGS=-g -O2

Убедитесь, что в GOOS и GOARCH установлены значения, указанные ранее.

Если все это хорошо, вы должны иметь возможность перейти к каталогу, содержащему ваш код go, и из командной строки:

go build

Будет создан пакет для системы и архитектор, которые устанавливаются в переменных среды.
Я столкнулся с некоторыми другими проблемами, когда я, наконец, понял это, но это другое дело, не связанное с этой проблемой.

Ответ 3

Для кросс-компиляции Go, кулак, вам нужно построить Go из исходного кода. Чтобы сделать это, похоже, вам нужно установить MinGW для получения gcc и других инструментов. Справка по этому вопросу находится в https://code.google.com/p/go-wiki/wiki/WindowsBuild.

Оттуда, вот как это происходит, если это похоже на кросс-компиляцию Linux:

Сначала cd в ваш каталог go\src. Если вы не знаете, где это, введите go env, и в результате вы увидите строку типа GOROOT="\some\dir\"; просто сделайте cd \some\dir\src\

Затем с помощью GOOS=linux и GOARCH=amd64 введите .\make.bat, который построит версию компилятора Go и т.д., ориентированную на Linux. Тогда вы больше не должны получать эту ошибку.