Как перебрать компиляцию из 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. Тогда вы больше не должны получать эту ошибку.