Ubuntu 下配置protobuf

原创 2016年08月29日 16:54:35

protobuf相比xml, json,节省内存空间,至于为什么,在这里就不探讨了。

上网下载源码protobuf-2.5.0.tar.gz (我使用的是这个版本,其他版本应该一样)

环境加ubuntu12.04


在安装该包前需要安装g++,make

apt-get install g++

apt-get intsall make


然后解压protobuf

tar zxvf protobuf-2.5.0.tar.gz  

cd protobuf-2.5.0

./configure   

make

make check

make install


安装完成后配置

vim ~/.profile

在文本最后添加如下内容

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib

source ~/.profile

protoc --version

查看版本成功,则安装成功


proto buf的使用

首先创建一个msg.proto文件,内容如下

package lm;     
message my_msg
{     
    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.cc  msg.pb.h


该生成文件的使用实例如下:

writer.cpp
#include "msg.pb.h"  
#include <iostream>  
#include <fstream>  
using namespace std;  
using namespace lm;  
int main(void)  
{  
    lm:my_msg msg1;  
    msg1.set_id(100);  
    msg1.set_str("hello");  
    fstream output("./msg.pb",ios::out | ios::trunc | ios::binary);  
    if( !msg1.SerializeToOstream(&output))  
    {  
         cerr << "Failed to write msg." << endl;     
         return -1;    
    }  
    return 0;  
}  

reader.cpp
#include "msg.pb.h"  
#include <iostream>  
#include <fstream>  
using namespace std;  
using namespace lm;  
  
void listmsg(const lm::helloworld & msg)  
{  
    cout << msg.id() <<endl;  
    cout << msg.str() <<endl;  
}  
  
int main(void)  
{  
    lm:msg_str msg1;  
    fstream input("./msg.pb", ios::in | ios::binary);     
    if (!msg1.ParseFromIstream(&input)) {     
            cerr << "Failed to parse address book." << endl;     
            return -1;     
    }     
    listmsg(msg1);  
    return 0;  
}  

g++  msg.pb.cc write.cpp -o write  `pkg-config --cflags --libs protobuf`

g++  msg.pb.cc reader.cpp -o reader  `pkg-config --cflags --libs protobuf`

注意符号` 并不是单引号,而是1字旁边的符号


关于protobuf的好久,好后再说!



版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

anaconda install protobuf,pycaffe

conda install -c https://conda.anaconda.org/anaconda protobuf

Linux(Ubuntu14.04)下安装Anaconda和Spyder

Linux(Ubuntu14.04)下安装Anaconda是为了安装python所需要的各种库以及他们的环境配置。 Spyder是使用python的IDE 一、安装python和pip 一般linux...

ubuntu下使用pre-trained模型测试caffe,找不到caffe 和 protobuf的错误

找不到caffe是由于没有讲caffe/python/加到PYTHONPATH中,解决方法: 终端中执行: sudo gedit /.bashrc在打开的文件最后加入: PYTHONPATH=/h...

ubuntu下快速使用protobuf

什么是protobuf简单讲就是一种类似于json,xml的通用数据交换格式,但是效率更高,更省空间,目前官方支持c++,java,python,ruby。其他语言有一些第三方做的开发包,需要自己选择...

ubuntu下安装protobuf

1.下载protobuf下载地址:http://code.google.com/p/protobuf/downloads/list2.编译protobuf 解压下载的zip包,cd到protobuf...

google protobuf学习笔记一:windows下环境配置

欢迎转载,转载请注明原文地址:http://blog.csdn.net/majianfei1023/article/details/45371743   protobuf的使用和原理,请查看:ht...

[寒江孤叶丶的Cocos2d-x之旅_35]在Cocos2d-Lua中使用ProtoBuf (Xcode配置方法)

数据传输格式有很多种最常见XML和Json,这两种格式生成速度非常快,但是解析的效率却很低。尤其在数据量非常大的情况下,会卡住好半天。并且这种格式的传输也会使得传输所耗费流量变大。解析效率最高,传输消...

android studio google.protobuf的配置

最近开发项目中使用了google.protobuf,所以要在Android studio里面配置一下才可以import该包的类。刚刚接触Android studio,对于配置maven从网上找资源找了...

protobuf windows 下的使用配置

我已经试验过,不过protobuf 源码不是在谷歌下载的。网上说下载不能下载了,一个好心网友的网盘里下载的   欢迎转载,转载请注明原文地址:http://blog.csdn.net/majian...
  • hapure1
  • hapure1
  • 2016年12月06日 11:25
  • 212

Unity配置Protobuf协议

Protobuf的强大我就不多介绍了,
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Ubuntu 下配置protobuf
举报原因:
原因补充:

(最多只允许输入30个字)