`

Protocol Buffers 学习笔记

 
阅读更多
1、安装
ubuntu下的安装很简单(虽然要安装几个包):
具体参见:https://github.com/google/protobuf/blob/master/src/README.md
从github下载了源码后:
$ sudo apt-get install autoconf automake libtool curl make g++ unzip
$ ./autogen.sh
$ ./configure
$ make
$ make check
$ sudo make install
$ sudo ldconfig # refresh shared library cache.


只编译静态库:
./configure --disable-shared



2、编译
.proto文件编译:
protoc addressbook.proto --cpp_out .  # 用于生成C++头文件和.cc文件
protoc addressbook.proto --python_out . #用于生成python相应的文件

注意: 可以通过 -I 参数更改搜索路径, 所有文件的路径必须为绝对路径,,
比如官方给的例子(除了上面那种所有文件都在当前文件夹的情况):
protoc -I=$SRC_DIR --python_out=$DST_DIR $SRC_DIR/addressbook.proto

c++文件编译:
下面命令中的pkg-config --cflags --libs protobuf会生成proto buff所需的编译选项(头文件目录,-pthread等)
c++ my_program.cc my_proto.pb.cc `pkg-config --cflags --libs protobuf`


3、教程
python版:https://developers.google.com/protocol-buffers/docs/pythontutorial
   可以print(proto)来看proto实例的内容
C++版:https://developers.google.com/protocol-buffers/docs/cpptutorial
   每个proto类都有一个DebugString()方法,用于返回供人看的内容

完成编译命令:
#只能用g++ 用gcc不行!
echo compile c++ part
protoc addressbook.proto --cpp_out .
g++ writeAddress.cc addressbook.pb.cc -o write.out `pkg-config --cflags --libs protobuf`
g++ readAddress.cc addressbook.pb.cc -o read.out `pkg-config --cflags --libs protobuf`

echo use ./write.out add.txt   to generate address file
echo use ./read.out add.txt   to read address file

echo compile python part
protoc addressbook.proto --python_out .
echo use python writeAddress.py add.txt   to generate address file
echo use python readAddress.py add.txt   to read address file


官方教程中有一些错误,,完整的代码(包含编译用的shell命令)见附件
分享到:
评论

相关推荐

    Caffe学习笔记1

    这篇学习笔记主要关注Caffe的基本结构、安装过程和核心组件。 首先,让我们来看一下Caffe的安装。安装Caffe通常遵循官方网站的教程,但在某些操作系统如OS X 10.9和Ubuntu 14.04上可能会遇到一些挑战。主要的依赖项...

    WebService另一种轻量级实现—Hessian 学习笔记.rar

    **WebService的轻量级实现——Hessian学习笔记** 在IT行业中,WebService作为一种常见的跨平台、跨语言的通信机制,被广泛应用于系统间的交互。然而,传统的SOAP(Simple Object Access Protocol)协议实现的...

    基于Go、Java、CSS的Docker与Linux技术资料笔记设计源码

    该项目为Docker、Go和Java技术整合的Linux环境笔记设计源码,包含74个文件,涵盖45个Markdown文档、14个Protocol Buffers文件、6个Go源代码文件、2个PNG图像文件、2个Java源代码文件、1个Git忽略文件、1个可执行文件...

    从零开始学 Go,Go 入门的学习笔记

    本学习笔记将从零开始,带你一步步走进 Go 语言的世界。 ### 基础语法 Go 语言的基础语法简洁明了,易于学习。首先,我们来看看变量的声明: ```go var age int = 25 ``` 这里,`int` 是数据类型,`age` 是变量名...

    Websocek笔记三 egret+skynet使用protobuf

    本文将深入探讨标题提及的“Websocket笔记三:egret + skynet使用protobuf”这一主题,结合描述中的源代码,我们将围绕Egret、Skynet以及Protocol Buffers(protobuf)这三个关键词展开讨论。 首先,Egret是一个...

    基于Java、Go、HTML的运维技术及开发技巧笔记设计源码

    该项目为Java主导,融合Go和HTML的综合性运维技术及开发技巧笔记设计源码,总计包含842个Markdown文档、5个Java源文件、5个Go源文件、1个.gitignore文件、1个XML文件、1个HTML文件、1个Protocol Buffers文件以及1个...

    protobuf自己学习的个人笔记.md

    `protobuf`(Protocol Buffers)是由Google开发的一种高效的数据序列化机制,它支持多种编程语言,并能以紧凑的形式存储结构化的数据。`protobuf`不仅被广泛应用于Google内部的大量项目中,也被开源社区所采纳,成为...

    caffe官网的一些翻译

    - **过程**: 使用Protocol Buffers、LevelDB等工具处理数据,计算出的均值图像存储为二进制文件。 **模型定义** - **参考**: 使用NIPS2012论文中的模型。 - **差异**: 训练集图像进行随机镜像变换,验证集不进行...

    fdbus编译代码(涉及protobuf编译)-总结

    https://codeload.github.com/protocolbuffers/protobuf/zip/refs/heads/main ``` **2. 配置与编译** - 进入下载的protobuf-master目录: ``` $ cd protobuf-master/ ``` - 自动生成configure配置文件: `...

    elasticsearch-analysis-dynamic-synonym-7.12.1.zip

    3. **protobuf-java-3.11.4.jar**:Protocol Buffers(简称protobuf)是Google的一种数据序列化协议,用于跨平台的数据交换。在Elasticsearch中,可能用于内部通信或者数据存储。 4. **httpclient-4.5.13.jar** 和 ...

    java代码-20大数据一 05

    9. **Apache Avro**和**Protocol Buffers**:数据序列化工具,可以高效地编码和传输数据。 10. **测试和调试**:在处理大数据时,单元测试和集成测试必不可少,JUnit和Mockito等工具可以帮助进行这些工作。 通过...

Global site tag (gtag.js) - Google Analytics