Go 编译文件如何在不同的 OS 或 CPU 架构上工作?

How Go compiled file works on different OS or CPU architectures?

由于我从昨天开始学习Golang :) 对编译后的文件有疑问

假设我编译了我的项目。它在 /bin 文件夹中生成一个 .exec 文件。 现在我的问题是既然文件是在 Mac 上用基于英特尔的 CPU 编译的,它是否应该在其他 OS 和其他 CPU 架构上编译,例如 AMD、ARM、等等,如果我想将它发布到 public?

如果我在后端使用 GO lang,我想这应该不是问题,因为我在服务器上 运行 它。但是,如果我发布我的 .exec 文件会发生什么,比方说在 AWS 上,其中有很多实例是基于负载自动 increases/decreases 的?有问题吗?

编辑:

对于那些正在寻找 Go 交叉编译工具的人来说,这是一个很好的解决方案 https://github.com/mitchellh/gox

第一个问题的答案是肯定的。 Go 的当前实现生成一个本机二进制文件,因此您可能需要为 Linux x86(32 位)、Linux x64(64 位)和 Linux ARM 使用不同的二进制文件.对于 Mac OS X,您可能还需要一个不同的。只要您依赖的任何库在该系统上以 32 位形式可用,您就应该能够 运行 在 64 位系统上运行 32 位可执行文件,因此您可以跳过制作 64 位-位可执行文件。

将来,可能会有为虚拟机(例如 JVM 或 .NET)编译的 Go 的其他实现,在这种情况下,您不需要为不同的体系结构编译多个版本。你的问题更多是关于现有的 Go 实现而不是语言本身。

我对 AWS 一无所知,但我建议您将其作为一个单独的问题提出。