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 则不会出现这种情况 现在还是不解 记录一下 





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

相关文章推荐

caffe安装中protobuf的版本问题

最近想换个版本的caffe安装,结果总出现问题,不是报caffe.pb.h的错就是报caffe.pb.o的错。 去某歌上一查,是protobuf版本的问题。github上最新版本的protobuf至...

linux下安装google protobuf(详细)

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

ubuntu下protobuf安装

1 下载protobuf     https://github.com/google/protobuf/releases/download/v2.6.1/protobuf-2.6.1.tar.gz ...

google protobuf在ubuntu上安装使用步骤

1、从github下载protobuff源码。       https://github.com/google/protobuf 2、解压,安装。         $ cd protobuf-m...

protobuf学习(1)-ubuntu14.04下protobuf2.6安装

protobuf学习(1)-ubuntu14.04下protobuf2.6安装 1 下载protobuf     https://github.com/google/pro...

linux下安装protobuf教程+示例(详细)

1 在网站 http://code.google.com/p/protobuf/downloads/list上可以下载 Protobuf 的源代码。然后解压编译安装便可以使用它了。 安装步骤如下所示...
  • realxie
  • realxie
  • 2012年04月12日 23:33
  • 20647

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...

Ubuntu 15.04 安装google protobuf步骤

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

Ubuntu 下配置protobuf

首先得到  protobuf 相应的包文件 ,在终端上输入如下       wget http://protobuf.googlecode.com/files/protobuf-2.5.0.ta...

好多在Linux下安装protobuf的blog都没有提起要多加这句高亮的话,因此安装不好...总之,多读read.me

好多在Linux下安装protobuf的blog都没有提起要多加这句高亮的话,因此安装不好...总之,多读read.me github下载解压后是没有configure文件的...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Ubuntu 下配置protobuf
举报原因:
原因补充:

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