本篇文章介绍 C++ 使用方向
文章目录
- ProtoBuf简介
- ProtoBuf安装
- Windows
- Linux
ProtoBuf简介
ProtoBuf(全称为 Protocol Buffer
)是一种序列化
结构数据的方法
序列化是将对象转换为可存储的或传输的格式的过程,通常用于数据交换或持久化存储。我们在C++/Java中编写的类不适合直接进行存储或者传输,需要转换为字节序列
常见的序列化格式
包括Json、XML,二者是具有一定规则的字符串和二进制格式
ProtoBuf 类比与 XML,是一种灵活,高效,自动化机制的结构数据序列化方法,但是比 XML 更小、更快、更简单,因为其使用二进制存储
ProtoBuf 的优点
- 语言无关、平台无关:ProtoBuf 支持C++、Java、Python 等多种语言,支持多个平台,Windows、Linux、Mac
- 高效:序列化反序列化速度很快,快于Json的处理速度;序列化后的体积相比Json和XML更小,适合网络传输
- 扩展性、兼容性好:可以更新数据结构,而不影响和破坏原有的旧程序
ProtoBuf 的缺点
- 应用不够广(相比XML和Json)
- 二进制格式可读性差
ProtoBuf 的使用
常规的类框架如下:
而ProtoBuf 通过 protoc
编译器根据属性帮我们自动生成 get/set方法和序列化反序列化方法
protoc 编译器编译.proto
文件,生成对应语言的库文件/包供我们使用
流程如下:
- 编写
.proto
文件,定义结构对象(message)及属性内容,相当于class - 使用
protoc
编译器编译.proto
文件,生成一系列接口代码,存放在新生成的头文件和源文件中 - 依赖生成的接口,将编译生成的头文件包含进我们的代码中,实现对 .proto 文件中定义的字段进行设置和获取,和对 message 对象进行序列化和反序列化
总的来说:ProtoBuf 是需要依赖通过编译生成的头文件和源文件来使用的
ProtoBuf安装
Windows
下载 ProtoBuf 编译器:https://github.com/protocolbuffers/protobuf/releases
下载后将压缩包解压到本地目录下。解压后的文件内包含 bin、include文件
配置环境变量,如此可以找到protoc
编译器
把解压后文件的bin目录
的路径配置到系统环境变量的Path中
检查是否配置成功:
打开cmd,输入
protoc --version #查看版本
有显示版本说明成功
Linux
下载 ProtoBuf 前一定要安装依赖库:autoconf automake libtool curl make g++ unzip
如未安装,安装命令如下:
Ubuntu
sudo apt-get install autoconf automake libtool curl make g++ unzip -y
CentOS
sudo yum install autoconf automake libtool curl make gcc-c++ unzip
下载 ProtoBuf 编译器:https://github.com/protocolbuffers/protobuf/releases
选择合适的版本,右键复制链接
后续命令如下:
#下载
wget [链接]
#解压
unzip [压缩包]
安装ProtoBuf
进入解压好的文件,执行如下命令:
# 第⼀步执⾏autogen.sh,但如果下载的是具体的某⼀⻔语⾔,不需要执⾏这⼀步。
./autogen.sh # 第⼆步执⾏configure,有两种执⾏⽅式,任选其⼀即可,如下:
# 1、protobuf默认安装在 /usr/local ⽬录,lib、bin都是分散的
./configure
# 2、修改安装⽬录,统⼀安装在/usr/local/protobuf下
./configure --prefix=/usr/local/protobuf
再依次执行
make #执行15分钟左右
make check #执行15分钟左右
sudo make install
如果在make check
出现错误,例如:
出现以上错误的原因是test的模块⾥⾯有⾮常多的测试⽤例,这些⽤例对服务器环境要求特别严格,需要增⼤下swap分区,具体操作可参考:
https://blog.csdn.net/AlexWang30/article/details/90341172
https://blog.csdn.net/nibiewuxuanze/article/details/127980216
(建议先扩大到3G,再执行make check
,不行就5G,再不行就8G,博主是8G才可以)
执行make check
,出现以下内容就可以执行sudo make install
到此,如果在执行./configure
时,选择了第⼀种执行方式,那么到这就可以正常使用 protobuf 了。如果选择了第⼆种执行方式,即修改了安装⽬录,那么还需要在 /etc/profile
中添加⼀些内容:
sudo vim /etc/profile#将如下内容写入文件中#(动态库搜索路径)程序加载运⾏期间查找动态链接库时指定除了系统默认路径之外的其他路径
exportLD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/protobuf/lib/
#(静态库搜索路径)程序编译期间查找动态链接库时指定查找共享库的路径
exportLIBRARY_PATH=$LIBRARY_PATH:/usr/local/protobuf/lib/
#执⾏程序搜索路径
exportPATH=$PATH:/usr/local/protobuf/bin/
#c程序头⽂件搜索路径
exportC_INCLUDE_PATH=$C_INCLUDE_PATH:/usr/local/protobuf/include/
#c++程序头⽂件搜索路径
exportCPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:/usr/local/protobuf/include/
#pkg-config路径
exportPKG_CONFIG_PATH=/usr/local/protobuf/lib/pkgconfig/
写入后,保存退出,执行命令使配置生效
source /etc/profile
最后,到了激动人心的时间,检查是否安装成功
查看版本号
protoc --version
如果成功显示版本,说明安装成功,没有则还需要检查前面的哪部分出错了,祝安装一切顺利
以上就是本篇博客的所有内容,感谢你的阅读
如果觉得本篇文章对你有所帮助的话,不妨点个赞支持一下博主,拜托啦,这对我真的很重要。