本文公众号文章链接:https://mp.weixin.qq.com/s/2MKjUUJ6QxJieW4BGvhbxg
Go通常都是编译打包成一个可执行文件,好处是不需要考虑依赖库,一个可执行文件,拷贝就可以直接执行。
但还有些场景,如需要以插件形式加载,方便动态更新,热重启等情况。这些场景的需求,就带来了plugin库,动态库加载。
那么先看看plguin这个库的文档。文档为1.10版本
编译命令和普通的编译不一样,增加了参数-buildmode=plugin
另外plugin第一次加载时候,init函数会调用。(后面的源码分析中会分析)
注意:
1、plugin只init一次,并且不能closed。
2、目前只实现了linux平台和macos平台
文件很少,就只有两个(其实源码里有三个文件)
只提供了两个接口
Open:加载so库文件
Lookup:查找对应符号(包括func,var等)