# 以 protobuf 3.21.12 为例
# 自行下载源码包, 解压缩
$ tar zxvf protobuf-cpp-3.21.12.tar.gz
# 进入到解压目录
$ cd protobuf-3.21.12/
# 构建并安装
$ ./configure # 检查安装环境, 生成 makefile
$ make # 编译
$ sudo make install # 安装
可以使用$ protoc --version
测试是否安装成功
# 测试时发现动态库链接失败
$ protoc --version
protoc: error while loading shared libraries: libprotoc.so.32: cannot open shared object file: No such file or directory
# 方法1:
# find指令查找动态库路径
$ sudo find /usr/local/ -name libprotoc.so
/usr/local/lib/libprotoc.so
# 将查找到的目录添加到/etc/ld.so.conf配置文件中:
$ sudo vim /etc/ld.so.conf
# 尾部追加/usr/local/lib/
# 方法2
# 直接使用ldconfig指令
sudo ldconfig
# 处理完成后:
$ protoc --version
libprotoc 3.21.12
确定数据格式,数据可简单可复杂,比如:
// 要序列化的数据
// 第一种: 单一数据类型
int number;
// 第二种: 复合数据类型
struct Person
{
int id;
string name;
string sex;
int age;
};
创建一个新的文件, 文件名随意指定, 文件后缀为 .proto
根据protobuf的语法, 编辑.proto文件
使用 protoc 命令将 .proto 文件转化为相应的 C++ 文件
需要将生成的c++文件添加到项目中, 通过文件中提供的类 API 实现数据的序列化/反序列化
Protobuf与C++的类型对照