轉載須註明出處:http://www.codelast.com/
先說一句題外話:與Google Protocol Buffers類似的項目還有:源自Facebook的Thrift。
本文只陳述Linux下的情況。
(1)首先下載得到文件protobuf-2.3.0.tar.gz。
在Linux下,解壓,然後請務必仔細看README.txt,文檔的一開頭就是說明在Unix下安裝的注意事項。
安裝過程爲:
1
2
3
4
|
. /configure make make
check make
install |
注意第3步有個比較奇怪的“make check”,顧名思義,它是用來做檢查的。如果“make check”失敗了,你仍然可以安裝,但是有可能Google Protocol Buffers的某些功能在你的系統上不能正常使用。“make check”過程消耗的時間比較長,要耐心等待。在這個過程中,會調用Google Test來進行測試,如果你用 過Google Test的話,就會知道那種全綠色的pass是多麼令人賞心悅目。下面就是我在我的RHEL 5上的“make check”結果:
“make install”可能會需要超級用戶權限。
默認安裝路徑是 /usr/local ,如果你要安裝在其他路徑,很容易,例如你想安裝在 /usr ,只需要這樣調用configure:
./configure --prefix=/usr
(2)Protocol Buffers文檔有多個,如果你初次接觸,可以按這樣的順序閱讀其中的幾個:Protocol Buffer Basics:C++,Language Guide,C++ Generated Code,……
(3)編譯Protocol Buffers應用程序時,要使用-lprotobuf鏈接到其動態庫或靜態庫。
(4)剛接觸Protocol Buffers的朋友可能會問,Protocol Buffers要如何用在socket通信的通信協議中?可以大概地說一下:你需要根據你的協議編寫一個.proto文件,此文件的格式是按Protocol Buffers的要求書寫的。然後用Protocol Buffers編譯器生成這個文件對應的類文件(包括一個.h文件和一個.cc文件),然後在你的程序中include生成的頭文件,當需要發送socket消息的時候,先用這個類的對象的SerializeToString()方法,生成一個字符串,這個字符串也就相當於我們傳統意義上的編碼過的消息,然後在socket消息的接收方,使用ParseFromString()方法,就可以將消息中包含的數據解析到生成的類的成員變量中,就可以直接取出來用了。整個過程不需要你去考慮編碼、解碼,就算更改了協議,修改工作也非常方便。有時間的話,我會寫一個比較詳細的sample呈上來。
(未完待續)