首页 > 其他分享 >ProtoBuf介绍及安装

ProtoBuf介绍及安装

时间:2024-09-23 18:48:59浏览次数:9  
标签:ProtoBuf local 路径 介绍 usr PATH 安装 protobuf

文章目录

序列反序列化

在网络传输过程当中,可以理解为:

  • 发送方
  • 接收方

它们彼此要通信,先要定好一个规则,也就是协议,双方都能认识的结构化数据(C++中的对象)。

网络传输,传输的是二进制序列,将结构化对象转换成二进制序列,叫做序列号;将二进制序列恢复成对象,叫做反序列化。

此外,将内存级数据持久化保存到磁盘当中,这个过程也需要序列化。

更详细可以看此篇文章:Linux网络编程——序列反序列化


现在较为主流的序列化工具有Json、Xml以及此篇介绍的ProtoBuf(protocol buffer)

ProtoBuf特点

本身特点:

  • 语言无关、平台无关:支持C++、Python、Java等多种语言,支持多个平台
  • 高效:比XML更小、更快、更简单
  • 扩展性、兼容性好:可以更新数据结构,而不影响原有的旧程序

使用特点:

  • ProtoBuf需要依赖提供编译生成的头文件和源文件来使用的

如何理解这句话:

正常情况:

class xx
{
 定义属性字段
 处理字段的方法
 处理类的方法:序列、反序列
}

PB:

message xx
{
 定义属性字段 
}

ProtoBuf为我们提供了一个编译器,通过编译,将这份message编译成对应的语言,里面包含了:

  • 类的字段定义
  • 处理字段的方法
  • 处理类的方法

这都是一键生成。

image-20240922201034646

有了代码生成机制,开发者就无需再编写解析协议的代码了。

安装ProtoBuf

windows

下载地址:Release Protocol Buffers v21.1 · protocolbuffers/protobuf (github.com)

根据电脑配置选择win32或者win64

image-20240922201610327

下载解压完毕之后:

image-20240922201808517

我们需要的是bin目录下的protoc.exe,将其配置在环境变量下(这个就不多说了哈)。

在终端输入protoc --version,有显示版本号表明成功

image-20240922202217488

Ubuntu

安装依赖库:

sudo apt-get install autoconf automake libtool curl make g++ unzip -y

还是刚刚那个地址:Release Protocol Buffers v21.1 · protocolbuffers/protobuf (github.com)

image-20240922202456208

all表示支持所有语言,如果只想C++/Java,选择指定的即可

image-20240922202657583

wget下载:

wget https://github.com/protocolbuffers/protobuf/releases/download/v21.1/protobuf-all-21.1.zip

解压:

unzip protobuf-all-21.1.zip

进入目录之后,编译protobuf

  1. autogen.sh

    如果是指定的某一面语言,则不需要此步

    image-20240922204655949

  2. 执行configure,有2种方式,任选其一:

    • ./configure(默认安装在/usr/local目录,libbin都是分散的)
    • ./configure --prefix=/usr/local/protobuf(统一安装在/usr/local/protobuf

    image-20240922205115238

  3. make(时间较长)
    image-20240922205200158

  4. make check(时间较长)
    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    有可能出现这种情况:

    在这里插入图片描述

    这是因为test模块的测试用例太多了,需要增大服务器swap分区,可参考此篇文章:

    Ubuntu 18.04 swap分区扩展_ubuntu18.04 如何查看swapfile文件路径

    可以先尝试3g,不行5g,再不行7g

  5. sudo make install

  6. 如果只执行./configure的时候,是按默认目录安装,此时就能直接使用protobuf
    如果是指定路径,还需要在/etc/profile添加内容:

    #(动态库搜索路径)程序加载运行期间查找动态链接库时指定除了系统默认路径之外的其他路径
    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/protobuf/lib/
    #(静态库搜索路径)程序编译期间查找动态链接库时指定查找共享库的路径
    export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/protobuf/lib/
    #执行程序搜索路径
    export PATH=$PATH:/usr/local/protobuf/bin/
    #c程序头文件搜索路径
    export C_INCLUDE_PATH=$C_INCLUDE_PATH:/usr/local/protobuf/include/
    #c++程序头文件搜索路径
    export CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:/usr/local/protobuf/include/
    #pkg-config路径
    export PKG_CONFIG_PATH=/usr/local/protobuf/lib/pkgconfig/
    
  7. 执行source /ect/profile

最后输入protoc --version,查看版本,有显示表面安装成功
在这里插入图片描述

Centos

安装依赖库:

sudo yum install autoconf automake libtool curl make gcc-c++ unzip

其他就和Ubuntu类似了

目前Centos停止维护了,建议后续开发采用Ubuntu

标签:ProtoBuf,local,路径,介绍,usr,PATH,安装,protobuf
From: https://blog.csdn.net/Dirty_artist/article/details/142449114

相关文章

  • CMake 教程(五):安装和测试
    通常,只构建出可执行程序是不够的,还需要能够安装可执行程序。在CMake中,我们可以使用install()指令指明安装规则。这条指令能够用来指明安装的程序、位置和文件。本节使用的源代码材料是官网的Step5目录。下面开始本节的练习。练习1:安装规则(InstallRules)本项目的安......
  • php: 编译安装时找不到libzip-devel,开启crb库
    一,yum找不到libzip-devel返回信息:[[email protected]]#yumsearchlibzipLastmetadataexpirationcheck:0:08:35agoonMon23Sep202406:04:32PMCST.==========================================================================NameExactlyMatched:libzip......
  • MarkDown下载、安装、和使用
    1下载记得先关闭你的杀毒软件通过百度网盘分享的文件:MarkdownPad+注册机+Awesomium_sdk.rar链接:https://pan.baidu.com/s/1l3YMwKIbYEstrT1yxJJlVA?pwd=6wff提取码:6wff备用地址:链接:https://pan.baidu.com/s/1HqnKWXDUpxHvF6TtVl6BKA提取码:h4vt2安装参考 https://www.ji......
  • 漆包线工厂生产管理MES系统功能介绍
    漆包线工厂的生产管理难点主要在于确保高质量的产品输出同时维持高效的生产效率。这包括精确控制漆包线的涂漆厚度与均匀性,以保证绝缘性能和电气性能;管理多样化的原材料库存,以应对不同客户需求;以及优化生产流程,减少断线、划伤等次品率,同时实现成本控制与节能减排目标。此外,员工技能......
  • RS-485通信与Modbus协议概念介绍
    RS485通信1、实际上在RS485之前RS232就已经诞生,但是RS232也有不足:1)接口的信号电平值较高,达到十几伏,容易损坏接口电路的芯片,而且和TTL电平不兼容,因此和单片机电路接起来的话必须加转换电路。2)接口使用的信号线与其他设备形成共地模式的通信,这种共地模式传输容易产生干扰,并且......
  • 安装nginx-http-flv-module模块
    简介nginx-http-flv-module是什么流程注意事项详细步骤查看当前已经安装的nginx版本下载对应版本的nginx源代码下载nginx-http-flv-module模块源代码重新编译nginx验证nginx-http-flv-module是否安装好了引用简介nginx中的模块虽然就是类似插件的概念,但是它无法像VsCode那样轻松......
  • 五款超实用免费报表工具介绍,各具特色任你挑选
    1.山海鲸可视化山海鲸可视化是一款完全免费的报表工具,不仅能够处理各式复杂报表,而且提供了非常丰富的组件和模板,软件操作方式为零代码的拖拽式操作,新手用户也能快速上手。同时,它附送一个免费的网站后台,你可以登录该网站并进行报表目录、角色、权限进行设置。优点:完全免费:山海......
  • CentOS 9 安装 google Chrome Web 浏览器的一种简单方法(2024.9)
    我自己选择了一个简单的方法。1.高级上网,到google的Chrome下载网页,下载Linux的安装包,google-chrome-stable_current_x86_64.rpm,109M如网址:https://www.google.com/intl/en_uk/chrome/next-steps.html?platform=linux&statcb=0&installdataindex=empty&defaultbrowser=0附百度......
  • 医用电子体温计方案介绍
    医用电子体温计是一种以电子电路为核心的温度测量仪器,具有测量速度快、温度分辨率高、测量结果准确可靠、使用方便等特点。医用电子体温计主要用于检测人体体温,可分为接触式和非接触式两大类,现介绍的是接触类的医用电子体温计,顺带提一句非接触式的是红外额温枪。医用电子......
  • 云设计模式介绍
    云设计模式介绍以及它们如何帮助应对分布式计算的谬误   作为构建分布式系统的软件工程师,我们经常遇到诸如不可靠的网络、延迟问题和安全问题等挑战。"分布式计算的谬误"描述了如果未解决,可能导致系统故障的常见误解。但认识到这些陷阱只是开始。真正的问题是:我们如何有效地克......