一、protobuf是什么?
protobuf(Google Protocol Buffers)是Google提供一个具有高效的协议数据交换格式工具库(类似Json),但相比于Json,Protobuf有更高的转化效率,时间效率和空间效率,是JSON的3-5倍。
二、protobuf有什么用?
Xml、Json是目前常用的数据交换格式,它们直接使用字段名称维护序列化后类实例中字段与数据之间的映射关系,一般用字符串的形式保存在序列化后的字节流中。消息和消息的定义相对独立,可读性较好。但序列化后的数据字节很大,序列化和反序列化的时间较长,数据传输效率不高。
Protobuf和Xml、Json序列化的方式不同,采用了二进制字节的序列化方式,用字段索引和字段类型通过算法计算得到字段之前的关系映射,从而达到更高的时间效率和空间效率,特别适合对数据大小和传输速率比较敏感的场合使用。
三、protobuf安装教程
(1)在线安装protobuf依赖库
sudo apt-get install autoconf automake libtool curl make g++ unzip
(2)下载源码
git clone https://github.com/google/protobuf.git # 这会下载最新的版本
(3)编译源码
sudo cp -rf protobuf /usr/local
cd /usr/local
sudo chmod -R 0777 protobuf # 更改文件夹权限
cd protobuf/
./autogen.sh
./configure #如果需要指定安装目录,可以在再加入 --prefix=***,例如 ./configure --prefix=/usr/protobuf 这样可以与原本已经存在的protobuf分开来,设定配置目录
make
make check
sudo make install
sudo ldconfig
(4)查看protoc版本
protoc --version
注:如果显示的版本号不是刚刚安装好的版本号,这可能是系统有多个protoc的版本,需要手动切换
(5)查看protoc所有的版本
whereis protoc
# 例如输出/usr/bin/protoc /usr/local/bin/protoc /usr/local/protobuf/bin/protoc,这里就有三个protobuf版本
#查看每个protobuf的版本
/usr/local/protobuf/bin/protoc --version
#输出libprotoc 3.11.4
/usr/local/bin/protoc --version
#输出libprotoc 2.6.1
/usr/bin/protoc --version
#输出libprotoc 3.3.0
(6)查看当前protobuf的地址
which protoc
#输出例如/usr/local/bin/protoc
(7)切换指定protobuf版本
sudo ln -s /usr/local/protobuf/bin/protoc /usr/local/bin/protoc #设置protobuf为3.11.4
qt creator配置protobuf环境
在创建的qt项目pro文件中,添加如下设置:
INCLUDEPATH +=\
/home/***/protobuf-3.11.4/src\
LIBS += -L /usr/local/lib/libprotobuf.so.* #libprotobuf.so.*的具体地址可以在/usr文件内搜索libprotobuf.so,如果在安装protoc时,没有指定安装地址,可以直接参考上面地址.
protobuf的头文件目录和库目录说明:
- 根据上边的配置头文件在/home/***/protobuf-3.11.4/src目录中,头文件在源码目录的src目录中
- 动态库的名字为 libprotobuf.so.*
参考链接:
https://blog.csdn.net/shuliwuflying/article/details/50814123
https://baijiahao.baidu.com/s?id=1664562530370180120&wfr=spider&for=pc