linux下安裝protobuf教程+樣本(詳細)

來源:互聯網
上載者:User
1 在網站 http://code.google.com/p/protobuf/downloads/list上可以下載 Protobuf 的原始碼。然後解壓編譯安裝便可以使用它了。安裝步驟如下所示: tar -xzf protobuf-2.1.0.tar.gz  cd protobuf-2.1.0  ./configure --prefix=/usr/local/protobuf make  make check  make install   2 > sudo vim /etc/profile 添加export PATH=$PATH:/usr/local/protobuf/bin/export PKG_CONFIG_PATH=/usr/local/protobuf/lib/pkgconfig/儲存執行source /etc/profile同時 在~/.profile中添加上面兩行代碼,否則會出現登入使用者找不到protoc命令3 > 配置動態連結程式庫路徑sudo vim /etc/ld.so.conf插入:/usr/local/protobuf/lib4 > su  #root 許可權ldconfig5> 寫訊息檔案:msg.proto
package lm; message helloworld {     required int32     id = 1;  // ID       required string    str = 2;  // str      optional int32     opt = 3;  //optional field }
將訊息檔案msg.proto映射成cpp檔案protoc -I=. --cpp_out=. msg.proto可以看到產生了msg.pb.h 和msg.pb.cc
6> 寫序列化訊息的進程write.cc
#include "msg.pb.h"#include <fstream>#include <iostream>using namespace std;int main(void) {     lm::helloworld msg1;     msg1.set_id(101);     msg1.set_str("hello");     fstream output("./log", ios::out | ios::trunc | ios::binary);     if (!msg1.SerializeToOstream(&output)) {         cerr << "Failed to write msg." << endl;         return -1;     }            return 0; }
編譯 write.cc  g++  msg.pb.cc write.cc -o write  `pkg-config --cflags --libs protobuf` -lpthread 執行write ./write, 可以看到產生了log檔案
7> 寫還原序列化的進程reader.cc
#include "msg.pb.h"#include <fstream>#include <iostream>using namespace std;void ListMsg(const lm::helloworld & msg) {      cout << msg.id() << endl;     cout << msg.str() << endl; } int main(int argc, char* argv[]) {     lm::helloworld msg1;     {         fstream input("./log", ios::in | ios::binary);         if (!msg1.ParseFromIstream(&input)) {             cerr << "Failed to parse address book." << endl;             return -1;         }           }     ListMsg(msg1); }
編譯:g++  msg.pb.cc reader.cc -o reader  `pkg-config --cflags --libs protobuf` -lpthread執行./reader 輸出 :101hello

8> 寫Makefile檔案

all: write readerclean:    rm -f write reader msg.*.cc msg.*.h *.o  logproto_msg:    protoc --cpp_out=. msg.protowrite: msg.pb.cc write.cc    g++  msg.pb.cc write.cc -o write  `pkg-config --cflags --libs protobuf`reader: msg.pb.cc reader.cc    g++  msg.pb.cc reader.cc -o reader  `pkg-config --cflags --libs protobuf`
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.