转载,请注明出处: http://blog.csdn.net/eclipser1987/article/details/8525383 ([email protected])
1.下载安装:
google protocol buffer 的官网地址是:http://code.google.com/p/protobuf/
建议下载稳定版本:protobuf-2.4.1 linux下载protobuf-2.4.1.tar.bz2 windows下载protobuf-2.4.1.zip
这里以linux下安装为实例:
tar -xvf protobuf-2.4.1.tar.bz2
cd protobuf-2.4.1
./configure --prefix=/usr/local/protobuf-2.4.1
make
make install
2.使用protobuf
查看编译生成的目录
cd /usr/local/protobuf-2.4.1
ls
bin include lib
其中,bin中的protoc是.proto文件的处理器,可用这个工具生成cpp,java,python文件.
由于系统常用这个工具,可以将其ln或者直接拷贝到系统环境bin下
ln -s /usr/local/protobuf-2.4.1/bin/protoc /usr/bin/protoc
同样,可以将头文件ln或者直接拷贝到系统环境
ln -s /usr/local/protobuf-2.4.1/include/google /usr/include/google
将lib文件ln或者直接拷贝到系统环境
略,方法同上.
这个时候,protobuf的开发环境已经搭建了.
3.如何使用protobuf
数据结构体:
message message_name{message_body;}
message_body格式:
例如required int32 query = 1[defaut=10];
形式为:rule type name = value[other_rule];
规则:
required表示必须具有该值域;
optional表示可选的值域;
repeated表示可重复的值域(即>=0);
其中requered/optional是常用rule,而repeated则不常用同时因为是历史遗留现使用repeated int32 samples=4[packed=true];形式;
value值:
value值最小为1,是底层编码时使用其中1-15占一位,>15则会占多位;
不同的message中的value值互不干扰,常以1开始计数。
数据类型之基本类型:
.proto Type C++ Type Java Type
double double double
float float fl