在Windows上编译GO程序以在Linux上部署

在Windows上编译GO程序以在Linux上部署,linux,windows,go,Linux,Windows,Go,我想在windows环境下开发,并已安装go 1.10.1。。。然而,我需要在linux上部署我的程序。是否有一种方法可以构建go程序并指定为linux构建。我已经看过很多关于从linux到windows的文档,但不是相反 我尝试过的最有希望的例子是: set GOOS=linux set GOARCH=amd64 go build filename.go -->它只构建了一个exe..我可以确认,您试图实现的功能在Windows 7和Windows 10上适用于我,并使用go 1.10.

我想在windows环境下开发,并已安装go 1.10.1。。。然而,我需要在linux上部署我的程序。是否有一种方法可以构建go程序并指定为linux构建。我已经看过很多关于从linux到windows的文档,但不是相反

我尝试过的最有希望的例子是:

set GOOS=linux 
set GOARCH=amd64 
go build filename.go

-->它只构建了一个exe..

我可以确认,您试图实现的功能在Windows 7和Windows 10上适用于我,并使用go 1.10.2。 要检查go安装是否支持所需的目标,请运行以下命令:

go tool dist list | find "linux/amd64"
您应该确保设置环境变量时没有任何附加或隐藏的空格,请按以下方式设置:

set GOOS=linux
set GOARCH=amd64
echo !%GOOS%!
echo !%GOARCH%!
然后通过以下方式进行验证,例如:

set GOOS=linux
set GOARCH=amd64
echo !%GOOS%!
echo !%GOARCH%!
如果组合无效,您应收到以下消息:

cmd/go:不支持的GOOS/GOARCH对linux/amd64

在此运行生成之后:

go build -v -x -o foreign_linux foreign.go
按照Volkers的建议,您可以检查创建的二进制文件是否真的是linux二进制文件:

type foreign_linux
您将收到一些神秘字符,但第一行的开头应该是
ELF
。如果是exe,您将看到
MZ


我可以确认,您尝试在Windows 7和Windows 10上通过go 1.10.2实现的功能对我有效。 要检查go安装是否支持所需的目标,请运行以下命令:

go tool dist list | find "linux/amd64"
您应该确保设置环境变量时没有任何附加或隐藏的空格,请按以下方式设置:

set GOOS=linux
set GOARCH=amd64
echo !%GOOS%!
echo !%GOARCH%!
然后通过以下方式进行验证,例如:

set GOOS=linux
set GOARCH=amd64
echo !%GOOS%!
echo !%GOARCH%!
如果组合无效,您应收到以下消息:

cmd/go:不支持的GOOS/GOARCH对linux/amd64

在此运行生成之后:

go build -v -x -o foreign_linux foreign.go
按照Volkers的建议,您可以检查创建的二进制文件是否真的是linux二进制文件:

type foreign_linux
您将收到一些神秘字符,但第一行的开头应该是
ELF
。如果是exe,您将看到
MZ


您是键入GOOS还是GOOS?GOOS。必须是胖手指。当你运行
go tool dist list
时,你想要的目标是列表的一部分吗?它实际上是一个exe还是只有一个.exe文件名后缀?@LCaraway:我只下载、解包了它(在我的例子中使用7-zip),并且拥有为Linux编译所需的所有内容。扔掉你的1.10.1,重新下载你是键入GOOS还是GOOS?GOOS。必须是胖手指。当你运行
go tool dist list
时,你想要的目标是列表的一部分吗?它实际上是一个exe还是只有一个.exe文件名后缀?@LCaraway:我只下载、解包了它(在我的例子中使用7-zip),并且拥有为Linux编译所需的所有内容。卸载你的1.10.1并重新下载成功!旁注,我必须使用CMD来实现这一点。以上步骤对Powershell不起作用,我怀疑这与设置GOOS和GOARCH环境变量有关。成功!旁注,我必须使用CMD来实现这一点。上述步骤对Powershell不起作用,我怀疑这与设置GOOS和GOARCH环境变量有关。