为了账号安全,请及时绑定邮箱和手机立即绑定

Google的Golang是解释器还是编译器?

Google的Golang是解释器还是编译器?

Go
qq_遁去的一_1 2021-05-15 13:14:45
我一直在研究Golang,并且发现它具有编译器。但是它是编译进入汇编级代码还是只是将其转换为BYTECODES然后调用该编译?我的意思是,即使在PHP中,我们也能够将其转换为BYTECODES并具有更快的性能。Golang是系统级编程和编译的替代品吗?
查看完整描述

2 回答

?
慕容708150

TA贡献1831条经验 获得超4个赞

这实际上是一个编译器(实际上它嵌入了2个编译器),并且使完全可执行的可执行文件成为可能。您不需要任何补充库或任何类型的运行时即可在服务器上执行它。您只需要针对目标计算机体系结构对其进行编译。

文档中

有两个官方的Go编译器工具链。本文档重点介绍gc Go编译器和工具(6g,8g等)。有关如何使用gccgo(使用GCC后端的更传统的编译器)的信息,请参阅设置和使用gccgo。

Go编译器支持三个指令集。不同体系结构的编译器质量存在重要差异。

amd64(aka x86-64); 6g,6l,6c,6a 一个成熟的实现。编译器具有有效的优化器(注册器),并且可以生成良好的代码(尽管有时gccgo可以做得更好)。

386(aka x86或x86-32); 8g,8l,8c,8a 类似于amd64端口。

手臂(又名ARM); 5g,5l,5c,5a 仅支持Linux二进制文件。没有其他端口广泛使用,因此没有经过全面测试。

除了底层操作系统接口代码之类的内容外,所有端口的运行时支持都是相同的,包括标记清除垃圾收集器,有效的数组和字符串切片以及对有效的goroutine(例如堆栈)的支持。按需增长和收缩。

编译器可以针对FreeBSD,Linux,NetBSD,OpenBSD,OS X(Darwin)和Windows操作系统。下面的环境变量讨论中列出了支持的全套组合。

在服务器上,通常将目标amd64平台作为目标。

请注意,Go以编译速度而闻名。在部署服务器程序时,我不会在开发计算机上针对不同的平台进行构建:我会部署源代码,并直接在生产服务器上进行编译。从Go1开始,我从来没有在一个平台上编译过代码,而没有在另一个平台上编译过代码。

在Windows上,我可以exe在开发计算机上exe进行安装,并将其发送给从未安装过Go相关内容的人们都没有问题。


查看完整回答
反对 回复 2021-05-17
  • 2 回答
  • 0 关注
  • 269 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信