嵌入式開發(fā)中使用protobuf

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ì)上與自定義類并沒有什么不同罐孝。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末呐馆,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子莲兢,更是在濱河造成了極大的恐慌汹来,老刑警劉巖续膳,帶你破解...
    沈念sama閱讀 222,378評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異收班,居然都是意外死亡坟岔,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,970評論 3 399
  • 文/潘曉璐 我一進店門摔桦,熙熙樓的掌柜王于貴愁眉苦臉地迎上來社付,“玉大人,你說我怎么就攤上這事邻耕∨缚В” “怎么了?”我有些...
    開封第一講書人閱讀 168,983評論 0 362
  • 文/不壞的土叔 我叫張陵兄世,是天一觀的道長啼辣。 經(jīng)常有香客問我,道長御滩,這世上最難降的妖魔是什么鸥拧? 我笑而不...
    開封第一講書人閱讀 59,938評論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮削解,結(jié)果婚禮上富弦,老公的妹妹穿的比我還像新娘。我一直安慰自己钠绍,他們只是感情好舆声,可當我...
    茶點故事閱讀 68,955評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著柳爽,像睡著了一般媳握。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上磷脯,一...
    開封第一講書人閱讀 52,549評論 1 312
  • 那天蛾找,我揣著相機與錄音,去河邊找鬼赵誓。 笑死打毛,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的俩功。 我是一名探鬼主播幻枉,決...
    沈念sama閱讀 41,063評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼诡蜓!你這毒婦竟也來了熬甫?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,991評論 0 277
  • 序言:老撾萬榮一對情侶失蹤蔓罚,失蹤者是張志新(化名)和其女友劉穎椿肩,沒想到半個月后瞻颂,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,522評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡郑象,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,604評論 3 342
  • 正文 我和宋清朗相戀三年贡这,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片厂榛。...
    茶點故事閱讀 40,742評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡盖矫,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出噪沙,到底是詐尸還是另有隱情炼彪,我是刑警寧澤,帶...
    沈念sama閱讀 36,413評論 5 351
  • 正文 年R本政府宣布正歼,位于F島的核電站,受9級特大地震影響拷橘,放射性物質(zhì)發(fā)生泄漏局义。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,094評論 3 335
  • 文/蒙蒙 一冗疮、第九天 我趴在偏房一處隱蔽的房頂上張望萄唇。 院中可真熱鬧,春花似錦术幔、人聲如沸另萤。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,572評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽四敞。三九已至,卻和暖如春拔妥,著一層夾襖步出監(jiān)牢的瞬間忿危,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,671評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人伶氢。 一個月前我還...
    沈念sama閱讀 49,159評論 3 378
  • 正文 我出身青樓杆逗,卻偏偏與公主長得像,于是被迫代替她去往敵國和親怀吻。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,747評論 2 361

推薦閱讀更多精彩內(nèi)容