1. 編譯安裝protobuf工具
如果Ubuntu中缺省的protobuf工具不符合要求匾寝,則需要自己編譯protobuf凿蒜。
如 Ubuntu 14.04缺省安裝的是protobuf 2.5.0薄扁。
$ sudo apt-get install protobuf-compiler
$ protoc --version
libprotoc 2.5.0
1.1 編譯本地protobuf工具
如下以編譯protobuf 3.7.1為例听怕。首先編譯本地編譯工具protoc职烧,protoc用于將.proto文件轉(zhuǎn)換成C++扁誓。
$ ../protobuf-3.7.1/configure --prefix=/usr
$ sudo make install
$ whereis protoc
protoc: /usr/bin/protoc /usr/bin/X11/protoc
1.2 編譯目標板上的庫
如下的命令編譯生成protobuf動態(tài)庫。編譯和使用從.proto文件得到的C++文件時蚀之,需要引用該庫蝗敢。
$ ../protobuf-3.7.1/configure --host=arm-linux-gnueabi --with-protoc=/usr/bin/protoc \
--disable-static --enable-shared
$ make
2. .proto文件
2.1 書寫 .proto 文件
首先我們需要編寫一個 proto 文件,定義我們程序中需要處理的結(jié)構(gòu)化數(shù)據(jù)足删。在 protobuf 的術(shù)語中寿谴,結(jié)構(gòu)化數(shù)據(jù)被稱為 Message。proto 文件非常類似 java 或者 C 語言的數(shù)據(jù)定義失受。
如下的ProtoDemo.proto是一個例子讶泰。
$ cat ProbufDemo.proto
package ProbufDemo;
enum Sex
{
male = 0;
female = 1;
}
message UserInfo
{
required uint32 uid = 1;
optional string nick_name = 2;
required Sex sex = 3;
}
2.2 編譯 .proto 文件
寫好 proto 文件之后,就可以用protoc將該文件編譯成目標語言了拂到,這里生成C++文件痪署。
假設.proto 文件放在 $SRC_DIR 下面,把生成的文件放在目錄$DST_DIR下兄旬,則可以使用如下命令:
- -I 指定文件搜索目錄
- --cpp_out指定生成的C++文件的存放位置
protoc -I=$SRC_DIR --cpp_out=$DST_DIR probufDemo.proto
比如前面的例子狼犯,命令如下:
protoc -I=. --cpp_out=src probufDemo.proto
將在src目錄下生成兩個文件:ProbufDemo.pb.h 和ProbufDemo.pb.cc,分別是C++ 類的頭文件和實現(xiàn)文件辖试。
2.3 使用C++類
除了依賴protobuf的庫辜王,.proto文件生成的類,本質(zhì)上與自定義類并沒有什么不同罐孝。