使用 protobuf 这款序列化协议是有一定的上手难度的,我在这里不讲复杂的使用和操作,只想让大家快速的使用这个工具,剩下的内容可以参考其他的博客。
Ubuntu 中直接利用 apt 工具下载:
> sudo apt-get install protobuf-compiler
> sudo apt-get install libprotobuf-dev
命令提示默认全部“Yes”。
然后可以验证一下 protoc 是否安装成功,正常显示则安装成功。
> protoc --version
libprotoc 3.6.1
简单的使用一下,我先编写出 user.proto 文件如下:
syntax = "proto3";
package chat;
message LoginRequest
{
uint64 id = 1;
string username = 2;
string password = 3;
bool state = 4;
}
然后在新建一个文件 pb。
> mkdir pb
在当前目录下利用 protoc 工具生成对应语言的 proto 代码,我以 C++ 为例:
> protoc --cpp_out=./pb user.proto
编写测试代码如下:
#include "pb/user.pb.h"
#include <iostream>
using ChatReq = chat::LoginRequest;
int main()
{
ChatReq req;
req.set_id(10);
req.set_username("fan");
assert(req.id() == 10);
assert(req.username() == "fan");
return 0;
}
执行下面的指令生成 a.out 文件,./a.out 运行不报错误即可。
> g++ main.cc pb/*.cc pb/*.h -std=c++11 -lprotobuf -lpthread
这里不要忘记链接 lpthread 库,不然会报错。
整体的目录结构如下:
- 当前目录
- main.cc
- pb/
- user.pb.cc
- user.pb.h
- user.proto
finished !!!