2 回答
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相关内容的人们都没有问题。
- 2 回答
- 0 关注
- 269 浏览
添加回答
举报