Go 对 ARM 架构的支持情况

未匹配的标注

本文为官方 Go Blog 的中文翻译,详见 翻译说明

鲁斯-考克斯
2020年12月17日

最近业界对非x86处理器议论纷纷,所以我们认为值得发表一篇关于 Go 对其支持的简短文章。

对我们来说,Go 的可移植性一直很重要,它不会过度适应任何特定的操作系统或架构。Go 的初始开源版本包括对两种操作系统(Linux和Mac OS X)和三种架构(64位x86、32位x86和32位ARM)的支持。

多年来,我们增加了对更多操作系统和架构组合的支持。

  • Go 1(2012年3月)支持原始系统以及64位和32位x86的FreeBSD、NetBSD和OpenBSD,以及32位x86的Plan 9。
  • Go 1.3(2014年6月)增加了对64位x86的Solaris的支持。
  • Go 1.4(2014年12月)增加了对32位ARM的Android和64位x86的Plan 9的支持。
  • Go 1.5(2015年8月)增加了对64位ARM和64位PowerPC上的Linux的支持,以及32位和64位ARM上的iOS。
  • Go 1.6(2016年2月)增加了对64位MIPS上的Linux,以及32位x86上的Android的支持。它还为32位ARM上的Linux增加了官方二进制下载,主要用于Raspberry Pi系统。
  • Go 1.7(2016年8月)增加了对z系统(S390x)上的Linux和32位ARM上的Plan 9的支持。
  • Go 1.8(2017年2月)增加了对32位MIPS上的Linux的支持,并且它增加了对64位PowerPC和z系统上的Linux的官方二进制下载。
  • Go 1.9(2017年8月)为64位ARM上的Linux增加了官方二进制下载。
  • Go 1.12(2018年2月)增加了对32位ARM上的Windows 10 IoT Core的支持,如Raspberry Pi 3。它还增加了对64位PowerPC上AIX的支持。
  • Go 1.14(2019年2月)增加了对64位RISC-V上的Linux的支持。

虽然x86-64端口在Go的早期得到了大部分的关注,但今天我们所有的目标架构都得到了我们的基于SSA的编译器后端的良好支持,并产生了优秀的代码。一路走来,我们得到了许多贡献者的帮助,包括来自 Amazon、ARM、Atos、IBM、Intel和 MIPS 的工程师。

Go 支持所有这些系统的交叉编译,开箱即用。例如,要从64位的 Linux 系统为32位x86的 Windows 建立一个应用程序。

GOARCH=386 GOOS=windows go build myapp # writes myapp.exe

在过去的一年中,几个主要的供应商已经宣布了用于服务器、笔记本电脑和开发者机器的新的 ARM64硬件。Go 在这方面处于有利的地位。多年来,Go 一直在 ARM64 Linux 服务器上为 Docker、Kubernetes 和 Go 生态系统的其他部分提供动力,以及在ARM64 Android 和 iOS 设备上提供移动应用。

自从今年夏天苹果宣布 Mac 过渡到苹果芯片以来,苹果和谷歌一直在合作,以确保 Go 和更广泛的Go 生态系统在其上运行良好,既在 Rosetta 2下运行 Go x86 二进制文件,又运行原生 Go ARM64二进制文件。本周早些时候,我们发布了第一个 Go 1.16 测试版,其中包括对使用M1芯片的Mac的本地支持。你可以在Go下载页面下载并试用适用于M1 Macs和所有其他系统的 Go 1.16 测试版。(当然,这是一个测试版,像所有的测试版一样,它肯定有我们不知道的错误)。如果你遇到任何问题,请在golang.org/issue/new中报告。)

在本地开发中使用与生产中相同的 CPU 架构总是很好的,可以消除两种环境之间的一个差异。如果你部署到 ARM64 的生产服务器上,Go 也可以让你轻松地在 ARM64 的 Linux 和 Mac 系统上开发。但当然,在一个系统上工作并交叉编译以部署到另一个系统上仍然像以前一样容易,无论你是在x86系统上工作并部署到 ARM,在 Windows 上工作并部署到 Linux,还是其他一些组合。

我们希望增加对 ARM64 Windows 10 系统的支持,这是我们的下一个目标。如果您有专业知识并愿意提供帮助,我们正在 golang.org/issue/36439 上协调工作。

本文章首发在 LearnKu.com 网站上。

本译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。

原文地址:https://learnku.com/docs/go-blog/gos-sup...

译文地址:https://learnku.com/docs/go-blog/gos-sup...

上一篇 下一篇
Summer
贡献者:1
讨论数量: 0
发起讨论 只看当前版本


暂无话题~