【问题标题】:Cross compile from Windows to Linux using os/exec Command使用 os/exec 命令从 Windows 交叉编译到 Linux
【发布时间】:2018-12-08 14:41:32
【问题描述】:

标题主要是这样说的。我知道我能做到

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

有什么想法吗?谢谢!

【问题讨论】:

标签: go build


【解决方案1】:

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

至于您要询问的代码,exec.Command 不会创建新进程,或者除了创建 Cmd 结构之外真的做任何事情。 os/exec 文档(特别是 Command 函数的文档)有一个示例,说明您似乎正在尝试执行另一个具有自定义环境变量分配的程序...请参阅链接文档的 Example (Environment) 部分如果您仍想以自己的方式进行交叉编译,请尝试遵循该结构。

【讨论】:

  • 那么如果我想设置GOOS和GOARCH,我去cmd.Env slice里面可以做吗?
  • 这样做将调用另一个设置了这些环境变量的命令。这只有在您调用的另一个命令是 go build 时才有意义,这似乎是您正在尝试做的事情......
猜你喜欢
  • 2012-08-06
  • 2017-06-22
  • 1970-01-01
  • 2023-01-27
  • 1970-01-01
  • 2017-02-03
  • 2014-01-16
  • 1970-01-01
  • 2015-11-25
相关资源
最近更新 更多