当前位置: 首页 > 面试题库 >

Golang二进制文件可移植吗?

杨雪松
2023-03-14
问题内容

假设我主要是Linux用户,但是我正在Go中开发一个我希望成为跨平台的应用程序。我到处搜寻,但似乎找不到能满足以下条件的信息:

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

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


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


 类似资料:
  • 文件移植性 幸运的是,对于许多在不同操作系统下工作的用户,Subversion命令行程序的行为方式几乎完全一致,如果你知道在一个平台上如何运行svn,你也就学会了在其他平台上运行。 然而,这一点在本软件的其他几类地方或Subversion保持的实际文件并不一定都是正确的。例如,在一个Windows系统,“文本文件”的定义与Linux环境下的类似,但是也有区别—行结束的字符串并不相同。当然也有其他的

  • 问题内容: 我有一些从Go程序中读取的文本文件。我想提供一个可执行文件,而无需另外提供该文本文件。如何将其嵌入Windows和Linux上的编译中? 问题答案: 使用go-bindata。从自述文件: 该工具可将任何文件转换为可管理的Go源代码。对于将二进制数据嵌入到go程序中很有用。在转换为原始字节片之前,可以选择对文件数据进行gzip压缩。

  • 我正在使用JPackage(OpenJDK 15.0.1)为Windows制作一个可移植的可执行文件。我尝试了下面的命令,但我双击了生成的exe文件,显示了安装程序窗口。它似乎不是可移植的可执行文件,而只是安装程序。 有什么办法可以用JPackage制作一个不用安装就可以使用的可执行文件?

  • WebAssembly的二进制格式是被设计成可在不同操作系统与指令集上高效执行的,无论在Web或非Web环境中。 对高效执行的设想 尽管执行环境是有条件的,本地的,不确定的,也不要向WebAssembly提供下述特性。有些情况下为了WebAssembly模块执行,也许不得不模拟一些宿主硬件或操作系统不提供的特性,让它们似乎被支持。这种情况将会导致糟糕的性能。 随着WebAssembly的标准化推进

  • vendor 文件是什么? 任何一个 Composer 程序包想要传递给安装包的用户的命令行脚本都应该被列为 vendor 文件。 如果包包含了包用户不需要的其他脚本(如构建或编译脚本),则代码不应被列为 vendor 文件。 它是如何定义的? 它是通过将 bin 键添加到项目中来定义的 composer.json。它被指定为文件数组,因此可以为任何给定项目添加多个二进制文件。 { "bi

  • 如果世界上只有一种操作系统,那么移植就会非常容易,但生活就会单调乏味。我们更喜欢有 一大堆操作系统物种,只要我们的生态系统不要过于清晰地分成捕食动物和被捕食动物。Perl 可以在十几种操作系统上运行,并且因为 Perl 程序是平台无关的,同一个程序可以运行在 所有这些系统上而不需要修改。 不错,是几乎不用修改。Perl 试图给程序员尽可能多的特性,但是如果你使用了属于某一操作 系统的特殊特性,那么