Golang二进制文件是否可移植?

cat*_*cat 36 cross-platform binaryfiles computer-architecture go

假设我主要是Linux用户,但我正在Go中开发一个我想要跨平台的应用程序.我四处寻找,但我似乎无法找到解释以下内容的信息:

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

我的问题实际归结为"静态/可移植是怎样的链接器/编译器?"

jos*_*hlf 44

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