最近在做go的项目编译的时候总是报包重复引用或者版本不同的错误
1.go语言本身的坑:go的import package和java的import package不同
一个工程引用了另一个工程时要注意使用同一个vender,即使用公共的库,不可两个工程分别有自己的vender,即把vender放到两个project的同一级目录中。
如:project1中有个方法GetLog()返回log4go的对象
project2中引用project1中的方法获取log4go对象,不可用自身的vender中的log4go库接收该lo4go对象,会报package type不同,因为一个是get返回的是project1/vender/log4go对象,而接收的是用/project2/vender/log4go。
2.插件.so的坑
agent和plugin这2个工程如果引用了相同的一个lib,则agent和plugin编译的时候一定要在同一个环境下编译,否则会报版本冲突,问题应该类似1所提到的。
如果想让agent和plugin分别在任何环境下编译都不回报错,则agent不要跟plugin有任何公共的引用,也就是agent和plugin的调用仅仅通过.so对外暴露的函数,agent通过opean来调用。