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的基本结构、安装过程和核心组件。 首先,让我们来看一下Caffe的安装。安装Caffe通常遵循官方网站的教程,但在某些操作系统如OS X 10.9和Ubuntu 14.04上可能会遇到一些挑战。主要的依赖项...
**WebService的轻量级实现——Hessian学习笔记** 在IT行业中,WebService作为一种常见的跨平台、跨语言的通信机制,被广泛应用于系统间的交互。然而,传统的SOAP(Simple Object Access Protocol)协议实现的...
该项目为Docker、Go和Java技术整合的Linux环境笔记设计源码,包含74个文件,涵盖45个Markdown文档、14个Protocol Buffers文件、6个Go源代码文件、2个PNG图像文件、2个Java源代码文件、1个Git忽略文件、1个可执行文件...
本学习笔记将从零开始,带你一步步走进 Go 语言的世界。 ### 基础语法 Go 语言的基础语法简洁明了,易于学习。首先,我们来看看变量的声明: ```go var age int = 25 ``` 这里,`int` 是数据类型,`age` 是变量名...
本文将深入探讨标题提及的“Websocket笔记三:egret + skynet使用protobuf”这一主题,结合描述中的源代码,我们将围绕Egret、Skynet以及Protocol Buffers(protobuf)这三个关键词展开讨论。 首先,Egret是一个...
该项目为Java主导,融合Go和HTML的综合性运维技术及开发技巧笔记设计源码,总计包含842个Markdown文档、5个Java源文件、5个Go源文件、1个.gitignore文件、1个XML文件、1个HTML文件、1个Protocol Buffers文件以及1个...
`protobuf`(Protocol Buffers)是由Google开发的一种高效的数据序列化机制,它支持多种编程语言,并能以紧凑的形式存储结构化的数据。`protobuf`不仅被广泛应用于Google内部的大量项目中,也被开源社区所采纳,成为...
- **过程**: 使用Protocol Buffers、LevelDB等工具处理数据,计算出的均值图像存储为二进制文件。 **模型定义** - **参考**: 使用NIPS2012论文中的模型。 - **差异**: 训练集图像进行随机镜像变换,验证集不进行...
https://codeload.github.com/protocolbuffers/protobuf/zip/refs/heads/main ``` **2. 配置与编译** - 进入下载的protobuf-master目录: ``` $ cd protobuf-master/ ``` - 自动生成configure配置文件: `...
3. **protobuf-java-3.11.4.jar**:Protocol Buffers(简称protobuf)是Google的一种数据序列化协议,用于跨平台的数据交换。在Elasticsearch中,可能用于内部通信或者数据存储。 4. **httpclient-4.5.13.jar** 和 ...
9. **Apache Avro**和**Protocol Buffers**:数据序列化工具,可以高效地编码和传输数据。 10. **测试和调试**:在处理大数据时,单元测试和集成测试必不可少,JUnit和Mockito等工具可以帮助进行这些工作。 通过...