我最近安装了go,并且正在尝试hello示例。
package main
import "fmt"
func main() {
fmt.Printf("hello, world\n")
}
$ go构建hello.go
返回hello二进制文件,大小为1.2Mb。这对于一个打个招呼的世界节目来说是比较大的。关于为什么文件大小很大,有什么特别的原因吗?是因为进口了"fmt“吗?
发布于 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,但这包括更强大的运行时支持。
发布于 2013-03-10 18:36:23
是的,"fmt“包是其中一个原因。反过来,它还会进口其他软件包。但是,即使不使用"fmt",整个运行时也会静态地链接到一个Go二进制文件中。Go的运行时并不简单,它包括调度器/goroutine与OS线程管理器、拆分堆栈分配程序、垃圾收集器和垃圾回收器友好内存分配程序(也是C线程友好的、信号处理程序和堆栈跟踪生成器)、.
https://stackoverflow.com/questions/15325804
复制相似问题