1 环境配置
我使用的Ubuntu环境。
protobuf有很多的版本,V2x开头和V3开头的版本,我们使用V3的版本,因为V2x的版本没有autogen.sh文件。
依次使用如下命令:
1、首先安装依赖环境
sudo apt-get install autoconf automake libtool curl make g++ unzip
2、下载源码
git clone https://github.com/protocolbuffers/protobuf.git
3、进入源码文件夹
cd protobuf/
4、版本回滚--v3.20.3
git checkout fe271ab
此步骤(步骤2-4)可以使用下载好的源码包进行解压即可,当github下载不下来的时候。
tar zxvf protobuf-all-3.20.3.tar.gz
5、解压后进入到解压目录
cd protobuf-3.20.3/
6、运行如下命令
./autogen.sh
./configure
sudo make
sudo make check
sudo make install
sudo ldconfig // 更新配置
protoc --vertion // 在任何目录下输入这个命令,查看protoc版本,出现版本号即成功
执行make check时可能出现一个失败,解决方法如下。使用虚拟机,比如说vmware,那么只需要将虚拟内存从4G变成8G即可。
7、下载protobuf-c
首先安装依赖
sudo apt-get install pkg-config pkgconf
下载源码
git clone https://github.com/protobuf-c/protobuf-c.git
8、进入目录
cd protobuf-c/
9、运行如下命令
./autogen.sh
./configure
sudo make
sudo make install
然后建立.proto文件。我的如下Msg.proto
syntax = "proto3";// 指定protobuf版本
option java_package = "com.freddy.im.protobuf";// 指定包名
option java_outer_classname = "MessageProtobuf";// 指定生成的类名
message Msg {
Head head = 1;// 消息头
string body = 2;// 消息体
}
message Head {
string msgId = 1;// 消息id
int32 msgType = 2;// 消息类型
int32 msgContentType = 3;// 消息内容类型
string fromId = 4;// 消息发送者id
string toId = 5;// 消息接收者id
int64 timestamp = 6;// 消息时间戳
int32 statusReport = 7;// 状态报告
string extend = 8;// 扩展字段,以key/value形式存放的json
}
把该文件放在protobuf目录下。
然后运行如下代码。
protoc --c_out=. Msg.proto
这样就得到了如下两个文件。
完成!