Go-plugin使用遇到的问题和解决方法

一、注意点:

1、插件和主程序的go版本号,依赖库版本需一致,不能改变、否则插件会无法使用。

2、插件对主程序的函数依赖问题、可使用定义接口的方式、将实现了接口的实例传入插件中使用

3、插件对主程序的类型依赖问题、可将类型封装成sync.map类型、进行插件和主程序间的数据交换

4、插件需要动态编译、即需要动态链接库文件、可将目标程序架构的依赖库文件,拷贝到目标主机上(如目标主机上无依赖库文件)

二、问题和解决方案:

1、go-plugin使用cgo来实现,因此需开启cgo

2、插件的交叉编译:

2.1 交叉编译的编译器设置:CC=arm-linux-gnueabihf-gcc
2.2 将交叉编译器的动态依赖库文件拷贝到目标主机上(如目标主机无依赖库文件)
2.3 主程序不能使用静态链接、否则会引起无法链接到插件的问题
2.4 主程序设置目标主机系统和架构build即可、插件build增加参数 -buildmode=plugin

你可能感兴趣的:(Go-plugin使用遇到的问题和解决方法)