我们使用 go help buildmode 可以看到 go 可以以多种方式进行构建,默认使用静态链接库.
在macos上我们使用shared 模式,但是显示不支持,我们换成linux平台进行实验:
创建libstd.so 库:
创建yxpkg包的 so库:
编译 main.go 生成动态链接的可执行文件:
我们对比之前生成的静态链接的可执行文件:发现其可执行文件大小,相差很大;
我们分别使用ldd 查看两个文件:
可见,两个文件一个是动态链接文件,一个是静态链接文件。
其中需要注意的是,go进行动态链接编译的时候,还是需要源代码文件辅助编译,我想主要是构建符号表的原因。
还有一些具体的细节,你可以配置自己的环境,自行进行测试;
编译后的工作区的目录结构如下:
其中,yxpkg 是包,yaoxu.go文件中使用到了 yxpkg包中的函数内容;
保持更新,如果对您有帮助,请关注 cnblogs.com/xuyaowen