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

时间:2018-12-08 00:58:45

标签: go build

标题大多是这样说的。我知道我可以做到

set GOOS=linux
set GOARCH=amd64
我在go build之前用cmd

,但是我试图编写一个构建脚本,并使用exec.Command来完成所有操作。

我的go build -o etc使用exec.Command(可构建),但是在以下两个命令之一之后的测试脚本中打印出GOOS时:

cmd := exec.Command("set", "GOOS=linux")
// OR
cmd := exec.Command("set GOOS=linux")

我得到windows

有什么想法吗?谢谢!

1 个答案:

答案 0 :(得分:1)

我强烈建议您改用Gox之类的工具。只需执行gox,它就可以交叉编译为每个受支持的构建目标。如果您只想针对特定目标进行构建,它也具有选项。

对于您要查询的代码,exec.Command不会创建新进程,或者除了创建Cmd结构以外,实际上没有做任何其他事情。 os / exec文档(特别是Command函数的文档)提供了一个您似乎试图执行的操作的示例-使用自定义环境变量分配执行另一个程序...请参见Example (Environment)部分链接文档,如果您仍想交叉编译,请尝试遵循该结构。