在linux下编译使用protobuf

编译源码包

从github:https://github.com/protocolbuffers/protobuf/tree/v2.5.0 下载源代码,此处我下载的是2.5.0版。
解压源码包,并进入如文件夹,如下图:

执行配置编译:

$ ./configure --prefix=~/Google/protobuf-install/
$ make
$ make check
$ make install

源码编译后创建的文件夹:protobuf-install。
可以看到protobuf-install目录下有bin、include和lib目录。
在这里插入图片描述
bin目录:
在这里插入图片描述
include目录:

在这里插入图片描述lib目录:
在这里插入图片描述

编译测试工程

把include目录下的文件都按照该目录结构和lib/libprotobuf.a复制到所测试的目录中去。
准备用于演示的结构化数据是Content,它包含两个基本数据:id是一个整数类型int32的数据;str是一个字符串string;opt是一个可选的成员,即消息中可以不包含该成员。
myMessage.proto代码:

  package Im;
  message Content
  {
    required int32  id = 1;
    required string str = 2;
    optional int32  opt = 3;
  }

执行安装目录下bin目录中的protoc程序,将写好的proto 文件用Protobuf 编译器将该文件编译成目标语言。命令生成myMessage.pb.h和myMessage.pb.cc文件,如下图所示:
在这里插入图片描述生成的文件:
在这里插入图片描述
测试生成的文件及结构化数据,该结构化数据由Im::Content类的对象表示,它提供一系列的get/set函数用来修改和读取结构化数据中的数据成员。
Writer.cpp代码:

#include <iostream>
#include "myMessage.pb.h"

int main()
{
    Im::Content msg1;
    msg1.set_id(10);
    msg1.set_str("hello world");
    std::cout << msg1.id() << '\n' << msg1.str() << std::endl;
    return 0;
}

先生成myMessage.pb.o文件,然后再编译Writer.cpp文件。输入如下命令进行编译:

g++ -c myMessage.pb.cc -I./include -L. -lprotobuf

生成myMessage.pb.o文件。
生成Writer可执行文件:

g++ -o Writer Writer.cpp myMessage.pb.o -I./include -L. -lprotobuf

运行可执行文件,验证输出是否正确:

./Writer

在这里插入图片描述

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值