protobuf簡單使用

2021-08-10 07:55:32 字數 2292 閱讀 6406

一、介紹

首先,protobuf是乙個開源專案,而且是後台很硬的開源專案。網上現有的大部分(至少80%)開源專案,要麼是某人單幹、要麼是幾個閒雜人等合夥搞。而protobuf則不然,它是 鼎鼎大名的google公司開發出來,並且在google內部久經考驗的乙個東東。由此可見,它的作者絕非一般閒雜人等可比。

那這個聽起來牛x的東東到底有啥用處捏?簡單地說,這個東東幹的事兒其實和

xml差不多,也就是把某種資料結構的資訊,以某種格式儲存起來。主要用於資料儲存、傳輸協議格式等場合。有同學可能心理犯嘀咕了:放著好好的xml不用,幹嘛重新發明輪子啊?!先別急,後面俺自然會有說道。

話說到了去年(大約是08年7月),google突然大發慈悲,把這個好東西貢獻給了開源社群。這下,像俺這種喜歡撿現成的傢伙可就有福啦!貌似喜歡撿現成的傢伙還蠻多滴,再加上 google的號召力,開源後不到一年,protobuf的人氣就已經很旺了。

二、安裝

(請見本文最後)

2、解壓安裝

root@ubuntu:/opt/protobuf-2.5.0# ./configure  

...  

root@ubuntu:/opt/protobuf-2.5.0#make  

...  

root@ubuntu:/opt/protobuf-2.5.0# make check  

...  

root@ubuntu:/opt/protobuf-2.5.0# make install       //need root permission

3、預設的安裝路徑是/usr/local/include和/usr/local/lib裡面,所以要設定一下編譯載入庫的預設環境變數,如果不設定會提示找不到動態庫。

export path=$home/bin/protobuf/bin:$path

export ld_library_path=$ld_library_path:$home/bin/protobuf/lib

export library_path=$library_path:$home/bin/protobuf/lib  

三、使用示例

1、寫乙個簡單的hello.proto檔案,定義資料的型別

package hello;  

message hello  

2、建立乙個out目錄,輸出protoc 格式化後的.cc檔案和.h檔案

protoc -i=./proto_def --cpp_out=./common proto_def/bc_pb.proto //以c++方式輸出

3、然後在out目錄下會生成兩個檔案

4、編寫簡單c++程式編譯碼測試

/*hello.cpp*/

#include 

#include 

#include "out/hello.pb.h"

usingnamespacestd;  

usingnamespacehello;  

intmain()  

else

hello b;  

ret = b.parsefromstring(tmp);  

if(ret)  

else

return0;  

}  5、為了方便編譯,寫乙個makefile管理

cc = g++  

target = hello  

cfalgs = -wall -g -i./out -i/usr/local/include  

ldflags = -l/usr/local/lib  

libs = -lprotobuf  

obj = hello.o hello.pb.o  

$(target):$(obj)  

$(cc) $(cflags) $(ldflags) $(libs) -o $@ $^  

hello.o:hello.cpp  

$(cc) -c $(cflags) $(ldflags) $(libs) -o $@ $<  

hello.pb.o:./out/hello.pb.cc  

$(cc) -c $(cflags) $(ldflags) $(libs) -o $@ $<  

clean:  

rm -fr *.o $(target)  

protobuf的簡單使用

作業系統 centos7.3.1611 x64 gcc版本 4.8.5 go 版本 go1.8.3 linux amd64 python 版本 2.7.5 libprotoc 2.5.0 protobuf是google開發一種資料描述語言,能夠將結構化資料序列化,可用於資料儲存 通訊協議等方面。首頁...

protobuf安裝及其簡單使用

protocol buffers 是一種語言中立,平台無關,可擴充套件的序列化資料的格式,可用於通訊協議,資料儲存等。protocol buffers 在序列化資料方面,它是靈活的,高效的。相比於 xml 來說,protocol buffers更加小巧,更加快速,更加簡單。一旦定義了要處理的資料的資...

protobuf 基本使用

linux apt install y protobuf compiler mac brew install protobuf 原始碼安裝 wget unzip protobuf all 3.5.1.zip cd protobuf 3.5.1 configure make make install ...