- Protobuf是一种轻便高效的序列化数据结构的协议,用于网络通信和数据存储.体积小,序列化速度和传输速度快
- openGauss采用了protobuf配合gRPC实现主备通信,附带了一些编译的消息头文件和.cc文件,以及第三方库.
- 我们要想让之前的protobuf文件和我们自己定义的兼容,需要提供自己的编译过的pb.cc和pb.h文件.但是遇到了几个问题.在编译时候总报未定义repeated等数据类型的错误.查了一下,都说是gcc版本的问题.但我是按照他要求的gcc 8.0进行编译的.protobuf的版本也和它的文档说明的版本一致.而且他提供的第三方的protobuf库不好使,报lib.so不存在的问题,应该是编译的环境路径等不一致.以上两个问题困扰了很久
- 今天偶然发现,可以查看bin文件和lib文件的编译环境.终于让我找到了这个坑,原来openGauss自带的protobuf是用gcc 4.8.5编译的.所以和8.2不兼容.于是进行了如下操作解决了之前的问题
- 在一个新的centos7.6系统中,编译安装protobuf3.7.1,这里有一个注意的地方,就是编译配置confifure时,prefix的路径要和openGauss的protobuf路径相同.编译安装完,将生成的lib,include,bin三个文件夹放入到openGauss的protobuf的comm路径下.
- 最后一步,在gausskernel的makefile中,添加一条配置,将lib库复制到安装包路径下
网友评论