在C语言环境下使用google protobuf

转载 2013年12月02日 17:40:19

本文写给经常使用C编程且不喜欢C++而又要经常使用google protobuf的人。

  经常写通讯程序的人对数据进行序列化或者反序列化时,可能经常使用google的protobuf(PB),其优点多多,不用我在这里赘述。

  google官方的PB可以跨语言使用,唯独缺了C语言。礼失求诸野,我在网上找到了一个非官方的protobuf-c,,令人奇怪的是这么好的东东从2011年下半年后再无更新,令人遗憾。

  使用这个工具之前当然是先安装它了。安装它之前请先下载最新版本的protobuf并安装它,然后再安装protobuf-c.

  PB的安装过程如下:

  1 到PB官方网站下载PB的安装包,如protobuf-2.5.0.tar.gz;

  2 用命令tar -zxf protobuf-2.5.0.tar.gz 对压缩包解压;

  3 进入解压后的源码目录 cd protobuf-2.5.0;

  4 在linux 上以root权限执行下列命令。/configure --prefix=/usr/local/protobuf &&  make && ake check && make install

  5 在/etc/profile中添加下列两行:

  export PATH=$PATH:/usr/local/protobuf/bin/

  export PKG_CONFIG_PATH=/usr/local/protobuf/lib/pkgconfig/

  在你home目录下的~/.bashrc添加下列两行:

  export PATH=$PATH:/usr/local/protobuf/bin/

  export PKG_CONFIG_PATH=/usr/local/protobuf/lib/pkgconfig/

  6 仍然以root身份打开/etc/ld.so.conf,添加下面一行:

  /usr/local/protobuf/lib

  7 以root身份执行命令ldconfig.

  然后安装PC,安装步骤如下:

  1 直接点击直接下载我修改过的PC安装包myprotobuf-c-0.15.xz(请放心下载,只要你有csdn账号,就可以下载,下载时候不需要分数);

  2 用命令tar -Jxf myprotobuf-c-0.15.xz对压缩包进行解压;

  3 进入源码目录protobuf-c-0.15,在此处可查看change_list.txt文件,里面说明了我对源码的修改之处;

  4 在linux以root身份执行安装命令。/configure --prefix=/usr/lib64/protobuf_c CXXFLAGS=-I/usr/lib64/protobuf/include LDFLAGS=-L/usr/lib64/protobuf/lib64 && make && make install

  5 在/etc/profile和~/.bashrc中修改PATH等变量结果,修改结果如下:

  export PATH=/usr/lib64/protobuf/bin:$/usr/lib64/protobuf_c/bin:PATH

  export PKG_CONFIG_PATH=usr/lib64/protobuf/lib64/pkgconfig:  /usr/lib64/protobuf_c/lib64/pkgconfig

  注意这里的结果已经把上面PB的修改结果也包含进去了。

  6 仍然以root身份打开/etc/ld.so.conf,添加下面一行:

  /usr/lib64/protobuf_c/lib64/

  7 以root身份执行命令ldconfig.

  安装完成后,可以写代码了。PC编译proto文件的命令格式是protoc-c --c_out=./   test.proto.

  大家可以先写几个简单的程序测试下它的有效性,protobuf-c(PC)官方网址里面就有很多很好的测试用例。

  使用过后,可能有的看法有:

  1 PC的API太简单了,无法与PB相提并论;

  2 proto文件中定义的message被PC转换为源码时,相应的class名称被改变,且函数名称也是不甚明了。

  针对第一看法,本文不予讨论,因为本文开头第一段就说明了使用PC的是不喜欢C++的人,PC的API虽简单而这正体现了C的灵活性。

  我属于持有第二种看法的人,原PC的class名称和message名称不一致而且不简短,class的函数名称也是不够简洁。原PC遵循New BSD License,所以为了达到目的------我直接把PC的源码修改了。

  我修改的代码已经上传到csdn的资源库中,请点击下载。

  请大家看看测试用例中的pc_public.h文件,相信大家会体会到宏的好处。

  另外,大家仔细查看测试用例的makefile中INC和LIB两个变量的值,大家自己使用我的PC写程序的时候尽量加上这两个变量或者直接参考我的makefile进行修改,以防止自己的程序在编译或链接的时候出问题。

  侯捷说过"源码之前,了无密码",此乃至理名言。本篇blog可以算作是我的测试用例的readme,希望有心人仔细去看我的测试用例。

在C语言环境下使用google protobuf

本文写给经常使用C编程且不喜欢C++而又要经常使用google protobuf的人。 经常写通讯程序的人对数据进行序列化或者反序列化时,可能进程使用google的protobuf(PB),其优点多多...
  • menggucaoyuan
  • menggucaoyuan
  • 2013年11月14日 02:32
  • 12955

protobuf windows 下的使用配置

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

如何在Windows环境下的VS中安装使用Google Protobuf完成SOCKET通信

如何在Windows环境下的VS中安装使用Google Protobuf完成SOCKET通信 原文出自:http://blog.csdn.net/monkey_d_meng/article/deta...
  • whuancai
  • whuancai
  • 2013年09月25日 00:13
  • 5461

【Google Protobuf】windows下protobuf的环境搭建(一)

一、Protobuf介绍   Protobuf是由谷歌开源而来,在谷歌内部久经考验。它将数据结构以.proto文件进行描述,通过代码生成工具可以生成对应数据结构的POJO对象和Protobuf相关的方...
  • liulongling
  • liulongling
  • 2016年07月14日 16:40
  • 3410

使用google protobuf RPC实现echo service

这篇文章将讲述如何使用google的protobuf库实现一个RPC service,就实现一个最简单的service吧:echo.文章对应的代码都可以在eventrpc中找到,写下这篇文章时的svn...
  • wvtear
  • wvtear
  • 2015年11月27日 18:50
  • 2061

谷歌 Google ProtoBuf用法实例

谷歌 Google ProtoBuf用法实例
  • cai13160674275
  • cai13160674275
  • 2017年05月05日 16:37
  • 1526

google protobuf使用

http://www.cnblogs.com/youxin/p/4073703.html If you get the source from github, you need to...
  • Fate_Dream
  • Fate_Dream
  • 2016年12月20日 14:01
  • 1528

google protobuf学习笔记二:使用和原理

一.什么是protobuf protobuf全称Google Protocol Buffers,是google开发的的一套用于数据存储,网络通信时用于协议编解码的工具库。它和XML或者JSON差不多,...
  • majianfei1023
  • majianfei1023
  • 2015年04月19日 19:57
  • 21758

Ubuntu 15.04 安装google protobuf步骤

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

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

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

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