Linux环境下Protobuf完整安装和使用教程
Linux环境下Protobuf完整安装和使用教程
- 目标
- 下载和安装
- 环境配置
- 一个例子
- 1、报文定义
- 2、报文生成
- 3、使用报文
- 4、编译程序
- 5、常见问题:
目标
本文将教会一个完全的新手如何搭建自己的protobuf Linux环境,并配置好编程环境,并使用一个例子帮助你学会使用protobuf.
下载和安装
1、下载protobuf安装包
$ git clone https://github.com/protocolbuffers/protobuf.git
2、安装依赖库
$ cd protobuf/
$ ./autogen.sh
$ ./configure --prefix=/usr/local/protobuf
$ make
$ sudo make install
$ sudo ldconfig // 刷新共享库,很重要的一步
3、检查安装是否成功
$ protoc --version
环境配置
1、添加环境变量
sudo vim /etc/profile
添加:
export PATH=$PATH:/usr/local/protobuf/bin/
export PKG_CONFIG_PATH=/usr/local/protobuf/lib/pkgconfig/
2、然后,刷新环境变量:
source /etc/profile
3、按照上述方式修改~/.profile。
4、配置动态链接库路径
sudo vim /etc/ld.so.conf
添加:
/usr/local/protobuf/lib
一个例子
1、报文定义
syntax = "proto3";
message SearchResponse {message Result {string url = 1;string title = 2;int64 telephone = 3;repeated string snippets = 4;}repeated Result results = 1;
}
2、报文生成
执行如下命令:
protoc --cpp_out=./ testproto.proto
就会在该目录下生成如下文件:
testproto.pb.h
testproto.pb.cc
3、使用报文
写一段程序如下:
#include <iostream>
#include "testproto.pb.h"
#include <string>
using namespace std;int main()
{GOOGLE_PROTOBUF_VERIFY_VERSION;SearchResponse sr;SearchResponse_Result* result = sr.add_results();result->set_url("url ...");string str = sr.SerializeAsString();std::cout << str << endl;return 0;
}
4、编译程序
编译命令如下:
g++ -g -I/usr/local/ -I/usr/local/protobuf/ -I/usr/local/bin/ -I/usr/local/protobuf/include/google/protobuf/ -I/usr/local/protobuf/include/ -std=c++11 -MMD -MP -MF -lprotobuf -pthread -o testproto testproto.pb.o testproto.pb.cc
特别注意,**-lprotobuf -pthread **一定要添加!
5、常见问题:
问题1:
对‘google::protobuf::internal::VerifyVersion(int, int, char const*)’未定义的引用
解决方案:
在编译命令中添加**-lprotobuf**选项。
问题2:
编译通过,但运行时报错:
terminate called after throwing an instance of 'google::protobuf::FatalException'what(): CHECK failed: (scc->visit_status.load(std::memory_order_relaxed)) == (SCCInfoBase::kRunning):
解决方案:
在编译命令中添加** -pthread**选项。
Linux环境下Protobuf完整安装和使用教程相关推荐
- linux校园网客户端,Ubuntu Linux环境下校园网客户端安装使用
最近发现好多兄弟姐妹不用Linux原因是在我们学校大大环境下上校园网有点费劲,或者干脆就不会弄,亦或者根本就没想到上网^_^ 这里我写上这么一段简单的过程,为了大家能够顺利上网,大牛直接掠过,不要喷我 ...
- Linux环境下Python的安装过程
Linux环境下Python的安装过程 前言 一般情况下,Linux都会预装 Python了,但是这个预装的Python版本一般都非常低,很多 Python的新特性都没有,必须重新安装新一点的版本,从 ...
- hp ux安装mysql5.1.56_详细讲解Linux环境下MySQL5.1安装步骤
1.下载MySQL免安装版/二进制版软件(不用编译) 文件格式:MYSQL-VERSION-OS.tar.gz 2.创建MySQL组,建立MySQL用户并加入到mysql组中 (不同版本的Unix中, ...
- linux环境下使用virtualbox安装ghost系统
linux环境下使用virtualbox安装ghost系统 环境为Ubuntu 18.04LTS,这次难点在于使用virtualbox如何使用虚拟机外部的文件安装系统.后来看到加载iso很方便,就往这 ...
- k8s简介以及linux环境下的详细安装步骤
k8s简介以及linux环境下的详细安装步骤 k8s是Kubernetes的简称,Kubernetes中间有8个单词,所以叫k8s,就是这么简单粗暴. 我们可以看到docker的图标是鲨鱼,k8s的图 ...
- linux下的python安装,linux环境下的python安装过程
一.下载python源码包 打开ubuntu下的shell终端,通过wget命令下载python源码包,如下图所示: wget https://www.python.org/ftp/python/3. ...
- django配置环境linux,linux环境下Django的安装配置详解
linux环境下Django的安装配置详解 1. 下载安装Django pip install Django==1.6.5 测试是否安装成功 >>> import django> ...
- Linux环境下ANTs软件安装(基于源码)
Linux环境下ANTs软件安装(基于源码) 1.下载Cmake 在命令行里运行: 2.下载ITK 在命令行里运行: 3.ANTs安装 (1)在命令行里运行: (2)编译完之后如果在 antsbin ...
- nwjs sdk linux x64,Ubuntu环境下的nwjs安装及使用教程
需求:通过nwjs实现一个可以全屏显示,防止用户退出浏览器的演示用app 一.安装Node.js sudo apt-get install nodejs sudo apt-get install np ...
最新文章
- 清明是品茗的好时节,那么你了解quot;明前茶quot;吗?
- 您能看出这个Double Check里的问题吗?(解答)
- a jquery 标签点击不跳转_form标签的action属性怎么用?form标签action属性的用法介绍(附实例)...
- 尤其适合程序员使用的TextMate for Mac
- MySQL远程实时备份binlog
- 统计学基础学习笔记:描述统计量
- Java中Xml文件的解析
- ae插件form_学习人数最多的课程 (推荐)AE+PR特效剪辑全能精英班
- Swift 2.0 自定义cell和不同风格的cell
- Bzoj 4173 数学
- bootstrap之invalid-feedback
- 野人岛java游戏,生存战争之独闯野人岛
- Elastic:使用 ElastAlert 发送 Slack 通知
- Linux 命令积累(当作笔记)
- C++数独求解器与生成器
- ESP8266/ESP32 网络温控器监控 Web服务器-基于温度控制输出
- ibm服务器型号规则,IBM服务器型号是怎么命名的?
- RSA的运用和前后端签名的一些看法
- 邢台职业技术学院计算机学费,邢台职业技术学院各专业学费标准
- Godaddy域名解析