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

Rah*_*hul 0 compilation go

我最近安装了go并尝试了hello world示例.

package main
import "fmt"
func main() {
    fmt.Printf("hello, world\n")
}
Run Code Online (Sandbox Code Playgroud)

$ go build hello.go

返回大小为1.2Mb的hello二进制文件.这对于一个你好的世界计划来说相对来说是巨大的.有什么特别的原因,为什么文件大小?是因为导入"fmt"吗?

Nic*_*ood 5

这是Go常见问题解答

为什么我的琐碎程序如此大的二进制文件?

gc工具链(5l,6l和8l)中的接头进行静态连接.因此,所有Go二进制文件都包括Go运行时,以及支持动态类型检查,反射甚至恐慌时间堆栈跟踪所需的运行时类型信息.

在Linux上使用gcc静态编译和链接的简单C"hello,world"程序大约为750 kB,包括printf的实现.使用fmt.Printf的等效Go程序大约为1.2 MB,但这包括更强大的运行时支持.