2015-11-23 98 views
24

假设我主要是Linux用户,但我正在开发一个应用程序,我想要跨平台。我四处搜寻,但我似乎无法找到信息,以免除下列内容:Golang二进制文件是否可移植?

  1. 如果我go install我的AMD64的Ubuntu系统上的二进制文件,将它也别人的 64位的Ubuntu工作/ Debian系统?
  2. 如何使用go install构建x86_64二进制文件,该文件也可以在32位Debianlikes上运行?
  3. 如果我必须使用Windows来创建一个可以在Windows上运行的二进制文件,那么我怎样才能确保即使我的Windows系统是64位的可执行文件将为x86_64构建?

我的问题实际上归结为“如何静态/便携是去链接器/编译器?”

+1

我不知道你在问什么。二进制文件可以在具有相同操作系统和体系结构的系统间移植Go为您的主机GOOS和GOARCH构建二进制文件,除非您另有指定。你不能把一个64位的二进制文件在32位系统上运行。 – JimB

+0

这并不是我的创建二进制文件的经验,而这些二进制文件是跨平台的。 – cat

+2

回答你的问题:“一点都不。”仅仅因为这是不可能的。没有编译器/链接器/加载器/工具链可以做到这一点。 Google的交叉编译对于Go来说是微不足道的。 – Volker

回答

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