Chinaunix首页 | 论坛 | 博客
  • 博客访问: 160221
  • 博文数量: 20
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 221
  • 用 户 组: 普通用户
  • 注册时间: 2015-01-14 18:03
个人简介

做好自己份内事

文章分类

全部博文(20)

文章存档

2019年(1)

2018年(2)

2017年(3)

2016年(3)

2015年(11)

我的朋友

分类: LINUX

2015-07-10 17:55:26


0:本文定位

本文主要是介绍linuxProtocol Buffers定义socket通信报文的编解码方法以及搭建开发、编译过程。只是介绍报文部分。无socket通信技术。

1:定义

Protocol Buffers,类似于,可用于数据存储、

个人理解Protocol Buffers是一个可以定义报文数据结构内容,然后设置字段编码为字节型以及从字节性解码为定义的数据结构内容,及提升报文的通用性以及对报文的编解码的代码撰写及统一。可以看看源码中的一些message.hmessage_lite.h中的API接口就可以大致了解功能。

2:源码

下载源码:

下载对应的版本,这里以protobuf-cpp-3.0.0-alpha-3.tar.gz为例。在目录下以此执行以下命令

$ ./configure

$ make

$ make check

$ make install

安装。


安装默认路径:/usr/local/


可以通过./configure --prefix=/usr命令修改安装路径,如果已经安装了其他版本,再次安装之前一定要执行make clean


安装完成之后执行下面命令:

 pkg-config --cflags protobuf         # print compiler flags

 pkg-config --libs protobuf           # print linker flags

 pkg-config --cflags --libs protobuf  # print both

如何上述命令执行不正常的话,执行

 configure CXXFLAGS="$(pkg-config --cflags protobuf)" \

              LIBS="$(pkg-config --libs protobuf)"

链接时需要增加选项::`pkg-config --cflags --libs protobuf`

c++ my_program.cc my_proto.pb.cc `pkg-config --cflags --libs protobuf`


3:使用过程

语法

定义数据结构语法可以自己查资料了,以下是一个示例:

message Point { 

  required int32 x = 1; 

  required int32 y = 2; 

  optional string label = 3;

message Line { 

  required Point start = 1; 

  required Point end = 2; 

  optional string label = 3;

message Polyline { 

  repeated Point point = 1; 

  optional string label = 2;

}

编译为c++文件

protoc -I=./ --cpp_out=./ lm.helloworld.proto[文件名]

会生成对应的.cc .h文件

将其包含至工程中。链接是需要增加链接条件:

`pkg-config --cflags --libs protobuf`

如果链接出现错误说明

PKG_CONFIG_PATH路径没有设置。

执行:

echo $PKG_CONFIG_PATH输出路径设置

可以通过:

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

命令来增加PKG_CONFIG_PATH路径,也可以将

PKG_CONFIG_PATH=/usr/local/lib/pkgconfig/

增加到系统变量文件中,然后更新文件

如果链接中出现动态库链接不上,则:

vim /etc/ld.so.conf

增加protocol动态库路径:

/usr/local/lib

执行:

ldconfig

更新动态库路径,至此就不应该有错误了。

阅读(1817) | 评论(0) | 转发(0) |
0

上一篇:samba服务器的配置

下一篇:openwrt入门编译

给主人留下些什么吧!~~