博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
windows以及linux 环境下Google Protocol Buffer 下载编译安装教程
阅读量:4048 次
发布时间:2019-05-25

本文共 4070 字,大约阅读时间需要 13 分钟。

protobuf的全称是Protocol Buffer,它是google 的一种数据交换的格式,可用于用于分布式应用之间的数据通信或者异构环境下的数据交换。

以下是window环境下编译安装步骤:

    在官方提供的压缩包中,提供了Linux下的编译脚本,但是,由于项目在windows下开发,因此,需要在Windows编译和安装Protobuf,结合自己的探索,希望能够帮助到初次接触到protobuf的朋友

1.下载Google Protocol Buffer源码包

下载可以到protobuf官网下载:,一般下载第一个或是第二个,因为第一,二个是源码包,第三个是可执行文件

2.解压压缩包

解压压缩包后,会得到类似于下面的文件列表:

3.编译vs工程

  • 在解压后的文件夹中,打开vsprojects目录,目录中的文件如图所示:

打开libprotobuf.vcproj(这个是vs的工程文件,打开前请确认安装了vs2005 或vs2008,vs2010等等),在打开工程中,   可能需要转换工程,直接转换就行了

打开后,vs的工程页面如图所示:

右键分别生成libprotobuflibprotobuf-litelibprotocprotoc这四个工程(编译模式为Release 模式):

4.编译完成

编译完成后,可以在vsprojects\Release下发现3个lib和一个exe文件,他们分别是libprotobuf.liblibprotobuf-lite.liblibprotoc.libprotoc.exe :

5.拷贝文件到windows目录下:

将得到的libprotobuf.liblibprotobuf-lite.liblibprotoc.libprotoc.exe拷贝到系统盘的windows目录下。如果你的系统安装在C盘,那么就拷贝到c:\windows目录下

6.编译proto文件,生成c++文件

假设在E:\test目录下有一个名为addressbook.proto的proto文件,那么打开CMD,输入下面的命令就可以生成C++源码了:

1
protoc.exe -I=e:\
test
--cpp_out=e:\
test
e:\
test
\addressbook.proto

生成了addressbook.pb.h和addressbook.pb.cc文件,将这个文件拷贝到需要用到的工程里就可以直接用了:

至此,protobuf的编译和使用教程就这么多了,如果有错误的地方,还请多多指出。

以下是linux环境下载编译安装

下面描述了在 GNU/Linux x86_64(centeros)下安装 protocol buffer,支持 C 和 C++ 。

1. google protocol buffer 下载

下载 google protocol buffer,使用版本 2.5的,主页
下载地址:
=

2. protocol buffer C 下载

使用最新的,并有维护的 0.16 版本
下载主页
下载地址
下面地址是有维护的 0.16 版本

3. 安装 google protocol buffer

一般文件名称是  protobuf-2.5.0.tar
执行命令解压
tar -xvzf protobuf-2.5.0.tar
得到目录 protobuf-2.5.0,下面是我的工作目录结构,pb 目录是全部有关 protocol buffer 的支持
/home/huangzhihui/pb/protobuf-2.5.0
执行 configure,构造 makefile 文件
./configure --help
看看携带那些参数,我们指定下面的参数,编译为32 位版本
./configure --prefix=/usr/local/ CFLAGS=-m32 CXXFLAGS=-m32
执行 make,编译完成 
执行 make install,编译完成后安装完成

4. 安装 protobuf-c

如果下载的是 protobuf-c-master.zip,windows 上解压后拷贝到 linux 上。
同样建立 /home/huangzhihui/pb/protobuf-c-master目录
因为 protobuf 有些用于 C++ 支持  google rpc 和测试的功能,我们不编译
也不安装它,所有我们这次修改一下 Makefile.am 文件。
统一给  AM_CPPFLAGS 加上 -m32 参数,编译为 32 位的程序;
统一给  AM_CFLAGS 加上  -m32 参数;
统一给 AM_LDFLAGS 加上  -m32 -L/usr/local/lib/ 参数,指定链接库;
注释掉有关 t/generated-code2 目录的所有文件,不参与编译和安装;

执行 configure,构造 makefile 文件

./configure --help
看看携带那些参数,我们指定下面的参数,编译为32 位版本
./configure --prefix=/usr/local/ CFLAGS=-m32 CXXFLAGS=-m32 protobuf_CFLAGS=-I/usr/local/include/ protobuf_LIBS=-L/usr/local/lib/

./configure --prefix=/usr/local/protocol-c-1.0-m32 CFLAGS=-m32 CPPFLAGS=-m32 CXXFLAGS=-m32 --datadir=/usr/local/protocol-c-1.0-m32/datadir protobuf_CFLAGS=-I/usr/local/protocol-2.5-m32/include protobuf_LIBS=-L/usr/local/protocol-2.5-m32/lib PROTOC=/usr/local/protocol-2.5-m32/bin/protoc LDFLAGS=-L/usr/local/protocol-2.5-m32/lib LIBS=-lprotobuf

使用这个语句配置,可以不修改配置文件了。

执行 make,编译完成 
执行 make install,编译完成后安装完成

5. 测试 protobuf-c

进入 /home/huangzhihui/pb/protobuf-c-master/t(相对路径t)
执行命令,根据协议描述文件,生成协议源代码
/usr/local/bin/protoc-c test.proto --c_out=./

或者(根据工具protoc-c目录来)

/usr/local/protocol-c-1.0-m32/bin/protoc-c test.proto --c_out=./

静态链接 libprotobuf-c.a

gcc -m32 generated-code/test-generated-code.c test.pb-c.c  -I../ -o test /usr/local/lib/libprotobuf-c.a
运行 test,输出 test succeeded.OK
./test
动态链接 protobuf-c
gcc -m32 generated-code/test-generated-code.c test.pb-c.c  -I../ -o test -L/usr/local/lib/ -lprotobuf-c

6. 查询 test-generated-code.c

/home/huangzhihui/pb/protobuf-c-master/t/generated-code/test-generated-code.c
通过看这个代码,我们大致能明白 C 使用 protocol buffer 的流程。

7. test-generated-code2.c,验证平台是否完整支持功能

构造测试文件 test-full.pb-c.c
/usr/local/protocol-c-1.0-m32/bin/protoc-c test-full.proto --c_out=./
gcc -m32 test-generated-code2.c ../test-full.pb-c.c -I../ -I../../ -I/usr/local/protocol-c-1.0-m32/include/ -I/usr/local/protocol-2.5-m32/include/ -o test -L/usr/local/protocol-c-1.0-m32/lib/ -lprotobuf-c
./test
8. cxx-generate-packed-data.cc,验证平台是否完整支持功能
export LD_LIBRARY_PATH="/usr/local/protocol-2.5-m32/lib/:/usr/local/protocol-c-1.0-m32/lib/"
构造测试文件 test-full.pb.cc
/usr/local/protocol-2.5-m32/bin/protoc test-full.proto --cpp_out=./
gcc -m32 cxx-generate-packed-data.cc ../test-full.pb.cc -I../ -I../../ -I/usr/local/protocol-c-1.0-m32/include/ -I/usr/local/protocol-2.5-m32/include/ -o test -L/usr/local/protocol-c-1.0-m32/lib/ -lprotobuf-c
./test
 

转载地址:http://vpfci.baihongyu.com/

你可能感兴趣的文章
柳永 《雨霖铃》
查看>>
MD2410开发板通过仿真器烧Bootloader简单流程
查看>>
MD2410仿真器烧Bootloader补充[1]:JTAG
查看>>
Meav《One I Love》
查看>>
林锐《高质量C++/C 编程指南》附录之《C++/C 代码审查表》
查看>>
林锐《高质量C++/C 编程指南》附录之《C++/C 编程质量试题》
查看>>
SC6600D_init.s
查看>>
最近比较烦
查看>>
祝福君君
查看>>
南澳西冲东冲穿越2日游
查看>>
又是一年毕业时
查看>>
我用一天时间做了一个MTK版本【转】
查看>>
把人生看透
查看>>
LED背光学习_可变模式分数电荷泵实现低功耗手机LCD背光驱动方案
查看>>
LED背光学习_标准和白光LED的基础知识与驱动
查看>>
秒 毫秒 微秒 纳秒 皮秒 飞秒
查看>>
认识A2DP
查看>>
寂寞是因为思念谁
查看>>
模拟屏学习资料_电视标准:PAL和NTSC
查看>>
模拟屏学习资料_电视标准:接收制式
查看>>