sec*_*rve 4 compilation dynamic-linking go static-linking
在一次 Go 研讨会上,讲师表示,当他编译 Go 应用程序(静态链接)时,生成的二进制文件大小约为 600 MB 大,但是当他使用动态链接编译相同的应用程序时,生成的二进制文件变成了 10 MB MB。
我不确定他在说什么,编译期间的动态链接与静态链接是否会造成二进制空间的差异,我是否可以控制它?
wlr*_*eye 5
默认情况下,Go 使用静态链接,因此所有内容(您的代码和包源代码)都会编译在一个大的二进制文件中。
自 Go 1.5 发布以来,您可以使用或-buildmode=shared选项编译 Go 共享库。然后你可以使用flag 编译你的应用程序二进制文件。详细信息可以在这里找到。go buildgo install-linkshared
-buildmode=shared
go build
go install
-linkshared
当然,如果您动态链接包,您的二进制大小将小于静态链接,但总应用程序大小不会减少,因为您只是“将代码放在其他地方”。因此,仅当您需要在不同应用程序之间共享相同的包时,动态链接才有意义。
归档时间:
9 年,8 月 前
查看次数:
2201 次
最近记录:
3 年,2 月 前