Golang 二进制文件是可移植的吗?

Are Golang binaries portable?

假设我主要是 Linux 用户,但我正在用 Go 开发一个我想跨平台的应用程序。我四处搜索,但我似乎找不到可以免除以下问题的信息:

  1. 如果我 go install 我的 amd64 Ubuntu 系统上的二进制文件,它是否也可以在 其他人的 64 位 Ubuntu/Debian 系统上运行?
  2. 我如何使用 go install 构建一个 x86_64 二进制文件,它也将 运行 在 32 位 Debianlikes 上开箱即用?
  3. 如果我必须使用 Windows 来制作一个将 运行 在 Windows 上的二进制文件,我怎样才能确保即使我的 Windows 系统是 64-位可执行文件将为 x86_64?
  4. 构建

我的问题实际上归结为,"how static/portable is go's linker/compiler?"

  1. 是的,会的;基本上所有为 64 位编译的二进制文件都是如此 Linux,而不仅仅是那些用 Go 编写的二进制文件(除了共享库,Go 不依赖它)
  2. 您可以在构建之前设置 GOOSGOARCH 环境变量:GOOS=windows GOARCH=386 go build(或 go install 或其他)等
  3. 默认情况下,将为您 运行 的系统构建一个二进制文件,但这不是必需的 - 请参阅 2