首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么Go编译版本相对庞大?

为什么Go编译版本相对庞大?
EN

Stack Overflow用户
提问于 2013-03-10 18:20:06
回答 2查看 476关注 0票数 0

我最近安装了go,并且正在尝试hello示例。

代码语言:javascript
运行
复制
package main
import "fmt"
func main() {
    fmt.Printf("hello, world\n")
}

$ go构建hello.go

返回hello二进制文件,大小为1.2Mb。这对于一个打个招呼的世界节目来说是比较大的。关于为什么文件大小很大,有什么特别的原因吗?是因为进口了"fmt“吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-10 19:35:51

我是常见问题解答

为什么我的普通程序是这么大的二进制程序?

gc工具链中的链接器(5l、6l和8l)进行静态链接。因此,所有Go二进制文件都包括Go运行时,以及支持动态类型检查、反射甚至恐慌时堆栈跟踪所需的运行时类型信息。 一个简单的C "hello,world“程序是在Linux上使用gcc静态编译和链接的,它大约是750 kB,包括printf的实现。使用fmt.Printf的等效Go程序大约为1.2MB,但这包括更强大的运行时支持。

票数 5
EN

Stack Overflow用户

发布于 2013-03-10 18:36:23

是的,"fmt“包是其中一个原因。反过来,它还会进口其他软件包。但是,即使不使用"fmt",整个运行时也会静态地链接到一个Go二进制文件中。Go的运行时并不简单,它包括调度器/goroutine与OS线程管理器、拆分堆栈分配程序、垃圾收集器和垃圾回收器友好内存分配程序(也是C线程友好的、信号处理程序和堆栈跟踪生成器)、.

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15325804

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档