今天看Brpc开源代码的时候,看到了里面提到了google开源的protobuf的数据序列化和反序列工具,所以特地下了源码,试着看下一个简单的使用过程。
1、protobuf的介绍
google protobuf是一个灵活的、高效的用于序列化数据的协议。相比较XML和JSON格式,protobuf更小、更快、更便捷。google protobuf是跨语言的,并且自带了一个编译器(protoc),只需要用它进行编译,可以编译成Java、python、C++、C#、Go等代码,然后就可以直接使用,不需要再写其他代码,自带有解析的代码。
更详细的介绍直接看google开源的主页:
https://developers.google.com/protocol-buffers/
下面看简单的一个安装步骤
2、下载源码
注意,网上的一些教程都有些误会,如果要用configure的方式进行安装,需要下载已经打包好的压缩包,下载的链接如下:
https://developers.google.com/protocol-buffers/docs/downloads
并不是git上的那个源码版本,git上的版本并没有写配置configure文件
3、安装protobuf
安装步骤比较固定,和其他的安装一样,如下:
tar -xvf protobuf
cd protobuf
./configure --prefix=/usr/local/protobuf
make
make check
make install
注意:如果你直接安装以下步骤,安装成功,那么是幸运的,因为没有碰到编译上的问题。
如果在编译上遇到了如下问题:
configure: error: sched_yield was not found on your system
那么你可以看log问题,观察编译的时候是哪里报错了,如果看到了报错内容如下:
error: unrecognized command line option "-std=c++11"
那么原因就是你系统的gcc版本过低,需要手动升级到高版本的gcc上,如何手动升级gcc,可以参考我的这一篇博文:CentOS 6.7手动升级gcc
4、安装完成之后,配置protobuf命令
更改环境变量:
vim /etc/profile
在文件的末尾添加如下的两行:
export PATH=$PATH:/usr/local/protobuf/bin/
export PKG_CONFIG_PATH=/usr/local/protobuf/lib/pkgconfig/
更改完成之后,执行如下命令立即执行:
source /etc/profile
这一步是必须的,因为如果少了这一步,会出现找不到protoc的命令错误。
配置动态链接库
vim /etc/ld.so.conf
在文件中添加/usr/local/protobuf/lib(注意: 在新行处添加)
更改完成之后,执行如下命令立即执行:
ldconfig
5、安装完成
此时,安装和配置完成,可以使用google提供的实例,进行protobuf的使用。
参考文献:
https://www.cnblogs.com/luoxn28/p/5303517.html
https://developers.google.com/protocol-buffers/docs/downloads