在一次Go研讨会上,讲师说,当他编译Go应用程序时,静态链接的二进制文件的大小约为600MB,但当他使用静态链接编译相同的应用程序时,结果二进制文件变成了10MB。
我不确定他在说什么,编译过程中的动态链接和静态链接是否会在二进制文件的空间上产生差异,我对此有控制吗?
发布于 2016-02-24 16:32:02
默认情况下,Go使用静态链接,因此所有内容(代码和包的源代码)都编译成一个大的二进制文件。
自Go 1.5发布以来,您可以使用go build
或go install
的-buildmode=shared
选项编译Go共享库。然后,您可以使用-linkshared
标志编译您的应用程序二进制文件。详情可以在here上找到。
当然,如果您动态链接包,您的二进制大小将小于静态链接,但总的应用程序大小不会减少,因为您只是“将代码放在其他地方”。因此,只有当你需要在不同的应用程序之间共享相同的包时,动态链接才有意义。
https://stackoverflow.com/questions/35596415
复制相似问题