【问题标题】:Cross-compiling Go on Windows 64 (TDM-GCC-64) to .linux file, but keeps compiling to .exe file despite GOOS=linux在 Windows 64 (TDM-GCC-64) 上将 Go 交叉编译为 .linux 文件,但尽管 GOOS=linux 仍继续编译为 .exe 文件
【发布时间】:2014-03-20 15:42:23
【问题描述】:

我正在尝试将 .go 源文件编译为 .linux 文件。我在 Windows 7 64 位上使用 TDM-GCC-64。

我已将我的 GOOS 设置为“linux”。我还将 GOARCH 设置为 amd64。

然后我使用 make.bat 在 C:\Go\src 中重建 Go。这一切都成功运行。

编译运行成功,但每次编译一个 Windows .exe,尽管设置了系统变量。

我的问题是如何克服这个问题 - 我做错了什么?

编辑:我在 TDM-GCC 之前安装了 MinGW,但它不起作用。

【问题讨论】:

  • 您确定您的GOOSGOARCH 变量已导出,因此被正在运行的进程看到了吗?
  • 如果使用 GCC 不是一个强要求,我建议看看这两种更简单的方法:github.com/mitchellh/goxdave.cheney.net/2013/07/09/…
  • 感谢 kostix - 我通过 Win7 GUI 中的高级设置将它们手动添加到系统变量中,而不是从命令行。我怎么知道它们是否被导出?
  • 感谢 Kluyg,它看起来不错 - 我会试试的!
  • Kluyg,我尝试了你的第一个建议:gox,这很有效,但不是直接的。它需要我重建 Go(创建工具链?),这引发了需要 gcc 的错误,所以我重新安装了 TDM-GCC,它确实有效。没有任何效果,这对于交叉编译来说是一种享受,所以谢谢。

标签: go cross-compiling


【解决方案1】:

您可以使用 echo 测试这些值是否正在导出,如下所示:echo %GOOS%

如果您在不重新启动控制台的情况下修改系统变量,它将没有新值。您应该尝试使用set GOOS="linux"set GOARCH="amd64" 通过命令行导出

如果这不能解决问题,我会按照 Kluyg 发布的指南进行操作。

【讨论】:

  • 谢谢 Ben,我首先使用了 kluyg 的建议,这使用 gox,虽然我必须重新编译 Go,所以确实需要 TDM-GCC,否则编译失败。
猜你喜欢
  • 2011-02-11
  • 1970-01-01
  • 2011-05-18
  • 1970-01-01
  • 2019-07-18
  • 2015-12-20
  • 1970-01-01
  • 2021-11-30
  • 1970-01-01
相关资源
最近更新 更多