Go 使用os/exec命令从Windows交叉编译到Linux

Go 使用os/exec命令从Windows交叉编译到Linux,go,build,Go,Build,标题主要说明了这一点。我知道我能做到 set GOOS=linux set GOARCH=amd64 在cmd中,我开始构建,但我正在尝试编写一个构建脚本,并使用exec.Command完成所有操作 我的go build-o etc与exec.Command(它生成)一起工作,但是当在任何一个命令之后在测试脚本中打印GOO时: cmd := exec.Command("set", "GOOS=linux") // OR cmd := exec.Command("set GOOS=linux")

标题主要说明了这一点。我知道我能做到

set GOOS=linux
set GOARCH=amd64
在cmd中,我开始构建,但我正在尝试编写一个构建脚本,并使用exec.Command完成所有操作

我的
go build-o etc
与exec.Command(它生成)一起工作,但是当在任何一个命令之后在测试脚本中打印GOO时:

cmd := exec.Command("set", "GOOS=linux")
// OR
cmd := exec.Command("set GOOS=linux")
我得到了
windows


有什么想法吗?谢谢

我强烈建议您使用类似的工具。它只需执行
gox
即可交叉编译到每个受支持的构建目标中。如果您只想为某些目标构建,它也有一些选项


至于您所询问的代码,
exec.Command
不会创建新进程,也不会真正执行创建
Cmd
结构以外的任何操作。os/exec文档(特别是函数的文档)中有一个示例,说明了您似乎正在尝试执行的操作-使用自定义环境变量分配执行另一个程序。。。请参阅链接文档的
示例(环境)
部分,如果您仍然希望交叉编译,请尝试遵循该结构。

设置的
Env
字段。另请参见。如果我想设置GOOS和GOARCH,我可以在cmd.Env切片中执行?这样做将调用另一个设置了这些环境变量的命令。只有当您正在调用的另一个命令是
go build
时,这才有意义,这似乎是您正在尝试执行的操作。。。