我已经在Windows机器上安装了Go 1.2,编写了一个虚拟程序并分别设置了环境变量GOARCH
和GOOS
"AMD64"和"linux".
当我发出" go build
"命令时,我收到一个错误:
go build runtime: linux/amd64 must be bootstrapped using make.bat
这是什么意思?
它告诉你它需要所有工具才能使用它们.
如果您的Windows GOARCH是amd64,那么您可以通过运行这个小批量程序来"构建"所有必需的工具:
set GOARCH=amd64 set GOOS=linux go tool dist install -v pkg/runtime go install -v -a std
如果成功,那么你应该能够做你所描述的(只使用amd64,而不是AMD64 - 它区分大小写).
如果您的Windows GOARCH是386,那么您需要先构建386工具.您需要为此下载mingw gcc.做什么user2714852说.
这里https://golang.org/wiki/WindowsCrossCompiling是linux的类似说明,也许你觉得它们很有帮助.
亚历克斯
要设置PowerShell环境变量,请使用(无需管理员模式):然后
$env:GOOS = "linux"
构建您的程序go build
更改的环境变量仅在当前PowerShell窗口中显示.重新打开窗口时,所有内容都将被重置.
我从windows构建Linux时遇到了一些重大问题.最后,它非常简单.我会评论亚历克斯的帖子,但我不能因为我是一个stackoverflow newb.
正如亚历克斯所说,设置环境变量.这必须以管理员身份完成(例如,右键单击"命令提示符"或"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
这将构建在环境变量中设置的系统和架构的包.
一旦我终于解决了这个问题,我遇到了一些其他问题,但这是另一个与此问题无关的问题.