Ubuntu 下配置protobuf

原创 2013年12月03日 14:20:53

最近想研究protobuf ,尝试了很多次都没有成功,我用的是ubuntu,在虚拟机下面的 ,protobuf 也用了很多版本但都没有成功。最终用的是2.5.0版本才成功,话不多说直接开始梳理一下配置的流程。
首先得到  protobuf 相应的包文件 ,在终端上输入如下
wget http://protobuf.googlecode.com/files/protobuf-2.5.0.tar.gz

下载完毕后进行解压 

tar zxvf protobuf-2.5.0.tar.gz 

进入到解压目录 

cd protobuf-2.5.0
进行执行

./configure  

中间可能会出错,估计是G++没装好,因为安装的时候要进行编译

安装G++    

apt-get install g++
另外最好把Vim、make 也装了,不然的后面的就很容易出问题,这些在其他教程上都没提到过,是个人的一点经验与大家分享一下

apt-get install vim

apt-get install make

./configure 成功之后,接下来 就如下几步

make 
make check
make install

安装完成后在终端下执行

vim ~/.profile

打开配置文件,在该文件中添加

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

然后保存退出,接下来执行

source ~/.profile

 是配置文件修改生效,最后执行

protoc --version

查看protobuf版本以测试是否安装成功

接下来的操作 可以参照如下 链接 ,他们写得非常好 


http://hahaya.github.io/2013/08/12/use-protobuf-in-c-plus-plus.html


http://www.ccvita.com/507.html


创建一个proto 文件 比如 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

http://blog.csdn.net/wallwind/article/details/11499643

对其代码做了一些纠正

write cpp 

#include "msg.pb.h"
#include <iostream>
#include <fstream>
using namespace std;
using namespace lm;
int main(void)
{
    lm:helloworld msg1;
	msg1.set_id(101);
	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:helloworld 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;
}


Makefile

all: write reader  
  
clean:
	rm -f write reader msg.*.cc msg.*.h *.o  log  
  
proto_msg:
	protoc --cpp_out=. msg.proto  
  
  
write: msg.pb.cc write.cpp
	g++  msg.pb.cc write.cpp -o write  `pkg-config --cflags --libs protobuf`  
  
reader: msg.pb.cc reader.cpp
	g++  msg.pb.cc reader.cpp -o reader  `pkg-config --cflags --libs protobuf` 


如果提示 make: Nothing to be done for 'all
则执行make clean
如果从头开始执行的话 
1.make clean
2.make proto_msg
3.make
package demo;  
message People
 { required string name = 1;   
required int32 id = 2;   
required string email = 3;  } 
demo::People p;
p.set_name("guoyilong");
p.set_id(i);
p.set_email("guoyilong@163.com");
p.SerializeToString(&data);

当 i = 0 里 也就是 set_id(0)时 有一个很奇怪的现象,具体如下

data.length() 为32 

strlen(data.c_str()); 则为 12 两个结果不一致

而i 不等于0 则不会出现这种情况 现在还是不解 记录一下 





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

ubuntu下protobuf安装

1 下载protobuf     https://github.com/google/protobuf/releases/download/v2.6.1/protobuf-2.6.1.tar.gz ...
  • kent_kent_kent
  • kent_kent_kent
  • 2017年01月03日 17:20
  • 5398

Ubuntu 15.04 安装google protobuf步骤

1.安装的环境介绍:VMware虚拟机安装的Ubuntu 15.04系统 2.安装前准备:确保m4、autoconf、automake、libtool已经正确安装过,如果没有安装一下为安装步骤(在管...
  • sunxianliang1
  • sunxianliang1
  • 2016年02月23日 15:07
  • 2898

Ubuntu14.04下安装protobuf 2.6.1

Ubuntu14.04下安装protobuf 2.6.1
  • lwplwf
  • lwplwf
  • 2017年08月01日 15:33
  • 1423

linux下安装google protobuf(详细)

说明: protobuf已经全面迁移到github,地址:https://github.com/google/protobuf 直接下载2.6.1版本:https://github.com/goo...
  • xiexievv
  • xiexievv
  • 2015年08月10日 11:55
  • 43552

protobuf 安装与使用

一. 安装 protoc 1.ubuntu 安装 2.windows安装 二.protobuf在java中的使用
  • CSqingchen
  • CSqingchen
  • 2016年02月15日 18:05
  • 5064

ubuntu 14.04下安装protobuf2.6.1

1.下载protobuf点击下载protobuf2.6.1解压安装 tar -zxvf protobuf-2.6.1.tar.gz sudo apt-get install build-essenti...
  • whoamiyang
  • whoamiyang
  • 2016年10月27日 16:40
  • 3131

ubuntu安装protobuf

1.下载protobuf 下载地址:http://download.csdn.net/detail/figoleon/9564841 2.编译protobuf 解压下载的zip包,cd到...
  • wuzuyu365
  • wuzuyu365
  • 2016年07月13日 19:12
  • 1055

安装protobuf到Ubuntu14.04

第一步从google网站下载新版本protobuf
  • zhbpd
  • zhbpd
  • 2014年11月14日 14:01
  • 2399

caffe安装中protobuf的版本问题

最近想换个版本的caffe安装,结果总出现问题,不是报caffe.pb.h的错就是报caffe.pb.o的错。 去某歌上一查,是protobuf版本的问题。github上最新版本的protobuf至...
  • missdaddio
  • missdaddio
  • 2017年03月28日 09:15
  • 6524

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

protobuf的使用和原理,请查看:http://blog.csdn.net/majianfei1023/article/details/45112415 Windows下google protob...
  • majianfei1023
  • majianfei1023
  • 2015年04月29日 22:14
  • 33235
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Ubuntu 下配置protobuf
举报原因:
原因补充:

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