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完整安装和使用教程相关推荐

  1. linux校园网客户端,Ubuntu Linux环境下校园网客户端安装使用

    最近发现好多兄弟姐妹不用Linux原因是在我们学校大大环境下上校园网有点费劲,或者干脆就不会弄,亦或者根本就没想到上网^_^ 这里我写上这么一段简单的过程,为了大家能够顺利上网,大牛直接掠过,不要喷我 ...

  2. Linux环境下Python的安装过程

    Linux环境下Python的安装过程 前言 一般情况下,Linux都会预装 Python了,但是这个预装的Python版本一般都非常低,很多 Python的新特性都没有,必须重新安装新一点的版本,从 ...

  3. hp ux安装mysql5.1.56_详细讲解Linux环境下MySQL5.1安装步骤

    1.下载MySQL免安装版/二进制版软件(不用编译) 文件格式:MYSQL-VERSION-OS.tar.gz 2.创建MySQL组,建立MySQL用户并加入到mysql组中 (不同版本的Unix中, ...

  4. linux环境下使用virtualbox安装ghost系统

    linux环境下使用virtualbox安装ghost系统 环境为Ubuntu 18.04LTS,这次难点在于使用virtualbox如何使用虚拟机外部的文件安装系统.后来看到加载iso很方便,就往这 ...

  5. k8s简介以及linux环境下的详细安装步骤

    k8s简介以及linux环境下的详细安装步骤 k8s是Kubernetes的简称,Kubernetes中间有8个单词,所以叫k8s,就是这么简单粗暴. 我们可以看到docker的图标是鲨鱼,k8s的图 ...

  6. linux下的python安装,linux环境下的python安装过程

    一.下载python源码包 打开ubuntu下的shell终端,通过wget命令下载python源码包,如下图所示: wget https://www.python.org/ftp/python/3. ...

  7. django配置环境linux,linux环境下Django的安装配置详解

    linux环境下Django的安装配置详解 1. 下载安装Django pip install Django==1.6.5 测试是否安装成功 >>> import django> ...

  8. Linux环境下ANTs软件安装(基于源码)

    Linux环境下ANTs软件安装(基于源码) 1.下载Cmake 在命令行里运行: 2.下载ITK 在命令行里运行: 3.ANTs安装 (1)在命令行里运行: (2)编译完之后如果在 antsbin ...

  9. nwjs sdk linux x64,Ubuntu环境下的nwjs安装及使用教程

    需求:通过nwjs实现一个可以全屏显示,防止用户退出浏览器的演示用app 一.安装Node.js sudo apt-get install nodejs sudo apt-get install np ...

最新文章

  1. 清明是品茗的好时节,那么你了解quot;明前茶quot;吗?
  2. 您能看出这个Double Check里的问题吗?(解答)
  3. a jquery 标签点击不跳转_form标签的action属性怎么用?form标签action属性的用法介绍(附实例)...
  4. 尤其适合程序员使用的TextMate for Mac
  5. MySQL远程实时备份binlog
  6. 统计学基础学习笔记:描述统计量
  7. Java中Xml文件的解析
  8. ae插件form_学习人数最多的课程 (推荐)AE+PR特效剪辑全能精英班
  9. Swift 2.0 自定义cell和不同风格的cell
  10. Bzoj 4173 数学
  11. bootstrap之invalid-feedback
  12. 野人岛java游戏,生存战争之独闯野人岛
  13. Elastic:使用 ElastAlert 发送 Slack 通知
  14. Linux 命令积累(当作笔记)
  15. C++数独求解器与生成器
  16. ESP8266/ESP32 网络温控器监控 Web服务器-基于温度控制输出
  17. ibm服务器型号规则,IBM服务器型号是怎么命名的?
  18. RSA的运用和前后端签名的一些看法
  19. 邢台职业技术学院计算机学费,邢台职业技术学院各专业学费标准
  20. Godaddy域名解析

热门文章

  1. 06_LR和最大熵模型_统计学习方法
  2. 撸VUE弹窗组件 + 可编辑div 组件
  3. 蓝天集团董事长郎凤娥专访
  4. goldendict设置使用vlc或mplayer发音
  5. 阿里云 wdcp面板后台控制安装
  6. 洛谷 P1074 靶形数独 Label:search 不会
  7. 使用PowerShel导入和导出Hyper-v虚拟机
  8. xtarbackup 安装
  9. 使用httpwatch抓包
  10. 番茄瑜伽13招-学好可以疏经活血祛风止痛