我们使用 go help buildmode 可以看到 go 可以以多种方式进行构建,默认使用静态链接库.

在macos上我们使用shared 模式,但是显示不支持,我们换成linux平台进行实验:

创建libstd.so 库:

创建yxpkg包的 so库:

编译 main.go 生成动态链接的可执行文件:

我们对比之前生成的静态链接的可执行文件:发现其可执行文件大小,相差很大;

我们分别使用ldd 查看两个文件:

 

 可见,两个文件一个是动态链接文件,一个是静态链接文件。

其中需要注意的是,go进行动态链接编译的时候,还是需要源代码文件辅助编译,我想主要是构建符号表的原因。

还有一些具体的细节,你可以配置自己的环境,自行进行测试;

编译后的工作区的目录结构如下:

 

 其中,yxpkg 是包,yaoxu.go文件中使用到了 yxpkg包中的函数内容;

保持更新,如果对您有帮助,请关注 cnblogs.com/xuyaowen