为什么Go编译器会产生大的二进制文件?
例如,在编译下面的代码后,我得到一个1.8 MB的exec文件
package main
import "fmt"
func main(){
fmt.Println("Hello World")
}
Run Code Online (Sandbox Code Playgroud)
我在Ubuntu和Win7上测试了上面的代码,结果是一样的!
我还用+70行代码编写了一个更大的程序,结果二进制文件又惊人地1.8 MB(实际上有几个字节差异).我想知道Go编译器将什么转储到二进制文件中.
use*_*740 13
为什么我的琐碎程序如此大的二进制文件?(来自Go Programming Language FAQ):
gc工具链(5l,6l和8l)中的接头进行静态连接.因此,所有Go二进制文件都包括Go运行时,以及支持动态类型检查,反射甚至恐慌时间堆栈跟踪所需的运行时类型信息.
在Linux上使用gcc静态编译和链接的简单C"hello,world"程序大约为750 kB,包括printf的实现.使用fmt.Printf的等效Go程序大约为1.2 MB,但这包括更强大的运行时支持.
| 归档时间: |
|
| 查看次数: |
1211 次 |
| 最近记录: |