【protobuf入门学习(一)】 —— protobuf安装教程

2024-08-27 19:36

本文主要是介绍【protobuf入门学习(一)】 —— protobuf安装教程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

(一)protobuf 的基本介绍

1. 序列化概念

 2. ProtoBuf 是什么

 3. ProtoBuf 的使用特点

(二)protobuf 安装

2.1 protobuf ——Windows

        1. 下载ProtoBuf编译器

2. 配置环境变量

 3. 检查是否配置成功 

2.2 protobuf —— Linux

1、下载ProtoBuf

2、安装ProtoBuf 

3、检查是否安装成功


(一)protobuf 的基本介绍

1. 序列化概念

序列化和反序列化

  • 序列化:把对象转换为字节序列的过程称为对象的序列化。
  • 反序列化:把字节序列恢复为对象的过程称为对象的反序列化。

什么情况下需要序列化

  • 存储数据:当你想把的内存中的对象状态保存到⼀个⽂件中或者存到数据库中时。
  • ⽹络传输:⽹络直接传输数据,但是⽆法直接传输对象,所以要在传输前序列化,传输完成后反 序列化成对象。例如我们之前学习过socket编程中发送与接收数据。

如何实现序列化  

  • xml 、json、protobuf 

2. ProtoBuf 是什么

protobuf  是由 Google 开发的一种语言无关、平台无关的可扩展机制,用于序列化结构化数据,类似于 XML 或 JSON,但更小、更快、更简单。Protobuf 通过定义数据结的 .proto 文件来描述数据的格式,然后使用 Protobuf 编译器(protoc)生成特定语言的数据访问类。

简单来讲,ProtoBuf是让结构数据序列化的⽅法,其具有以下特点:

  • 高效性:生成的代码在序列化和反序列化数据时比 XML 和 JSON 更快,占用空间更小。
  • 跨语言支持:支持多种编程语言,如 C++, Java, Python 等。
  • 扩展性:可以在不破坏现有代码的情况下添加新的字段。
  • 二进制格式:数据以二进制形式存储,这使得它比文本格式(如 XML 和 JSON)更紧凑,但可读性较差。

3. ProtoBuf 的使用特点

  • 1. 编写.proto⽂件,⽬的是为了定义结构对象(message)及属性内容。
  • 2. 使⽤protoc编译器编译.proto⽂件,⽣成⼀系列接⼝代码,存放在新⽣成头⽂件和源⽂件中。
  • 3. 依赖⽣成的接⼝,将编译⽣成的头⽂件包含进我们的代码中,实现对.proto⽂件中定义的字段进⾏ 设置和获取,和对message对象进⾏序列化和反序列化。 

(二)protobuf 安装

2.1 protobuf ——Windows

1. 下载ProtoBuf编译器

下载地址:https://github.com/protocolbuffers/protobuf/releases

可以不⽤下载最新版本,我以v27.2为例,具体的下载根据自己电脑情况选择

下载之后将压缩包解压到本地⽬录下。解压后的⽂件内包含bin、include⽂件,以及⼀个readme.txt.


 2. 配置环境变量

把解压后⽂件中的bin⽬录配置到系统环境变量的Path中去


3. 检查是否配置成功 

打开cmd

  • 输⼊: protoc--version

查看版本,有显示说明成功

到这一步,恭喜你ProtoBuf安装成功!!! 


2.2 protobuf —— Linux

1、下载ProtoBuf

下载ProtoBuf前⼀定要安装依赖库:autoconfautomakelibtoolcurlmakeg++unzip

如未安装,安装命令如下:

  • Ubuntu⽤⼾选择:
 sudo apt-get install autoconf automake libtool curl make g++ unzip -y
  • CentOS⽤⼾选择:
 sudo yum install autoconf automake libtool curl make gcc-c++ unzip

ProtoBuf 下载地址:https://github.com/protocolbuffers/protobuf/releases

可以不⽤下载最新版本,这里我换一个以v21.11为例:

  • 如果要在C++下使⽤ProtoBuf,可以选择cpp.zip
  • 如果要在JAVA下使⽤ProtoBuf,可以选择java.zip
  • 其他语⾔选择对应的链接即可。 
  • 希望⽀持全部语⾔,选择all.zip

在这⾥我们希望⽀持全部语⾔,所以选择protobuf-all-21.11.zip,右键将下载链接复制出来。 下载命令:

wget https://github.com/protocolbuffers/protobuf/releases/download/v21.11/protobuf-all
21.11.zip

下载完成后,解压zip包:

unzip protobuf-all-21.11.zip

解压完成后,会⽣成 protobuf-21.11 ⽂件,进⼊⽂件:


2、安装ProtoBuf 

进⼊解压好的⽂件,执⾏以下命令:

第⼀步执⾏ autogen.sh , ./autogen.sh 但如果下载的是具体的某⼀⻔语⾔,不需要执⾏这⼀步。

第⼆步执⾏ configure ,有两种执⾏⽅式,任选其⼀即可,如下:

  • 1 、 protobuf 默认安装在 /usr/local ⽬录, lib 、 bin 都是分散的 ./configure
  • 2 、修改安装⽬录,统⼀安装在 /usr/local/protobuf 下 ./configure --prefix=/usr/local/protobuf

再依次执行

make        // 执⾏ 15 分钟左右

make check // 执⾏ 15 分钟左右

sudo make install 

执⾏ make check 后,出现以下内容就可以执⾏ sudo make install 

到此,需要你回忆⼀下在执⾏configure时,如果当时选择了第⼀种执⾏⽅式,也就是 ./configure ,那么到这就可以正常使⽤protobuf了。如果选择了第⼆种执⾏⽅式,即修改了安装 ⽬录,那么还需要在/etc/profile中添加⼀些内容:

sudo vim /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/

最后⼀步,重新执⾏/etc/profile⽂件:

source /etc/profile


 3、检查是否安装成功

输⼊ protoc --version 查看版本,有显⽰说明安装成功。

这篇关于【protobuf入门学习(一)】 —— protobuf安装教程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1112582

相关文章

Python中win32包的安装及常见用途介绍

《Python中win32包的安装及常见用途介绍》在Windows环境下,PythonWin32模块通常随Python安装包一起安装,:本文主要介绍Python中win32包的安装及常见用途的相关... 目录前言主要组件安装方法常见用途1. 操作Windows注册表2. 操作Windows服务3. 窗口操作

从入门到精通C++11 <chrono> 库特性

《从入门到精通C++11<chrono>库特性》chrono库是C++11中一个非常强大和实用的库,它为时间处理提供了丰富的功能和类型安全的接口,通过本文的介绍,我们了解了chrono库的基本概念... 目录一、引言1.1 为什么需要<chrono>库1.2<chrono>库的基本概念二、时间段(Durat

解析C++11 static_assert及与Boost库的关联从入门到精通

《解析C++11static_assert及与Boost库的关联从入门到精通》static_assert是C++中强大的编译时验证工具,它能够在编译阶段拦截不符合预期的类型或值,增强代码的健壮性,通... 目录一、背景知识:传统断言方法的局限性1.1 assert宏1.2 #error指令1.3 第三方解决

深度解析Spring AOP @Aspect 原理、实战与最佳实践教程

《深度解析SpringAOP@Aspect原理、实战与最佳实践教程》文章系统讲解了SpringAOP核心概念、实现方式及原理,涵盖横切关注点分离、代理机制(JDK/CGLIB)、切入点类型、性能... 目录1. @ASPect 核心概念1.1 AOP 编程范式1.2 @Aspect 关键特性2. 完整代码实

从入门到精通MySQL 数据库索引(实战案例)

《从入门到精通MySQL数据库索引(实战案例)》索引是数据库的目录,提升查询速度,主要类型包括BTree、Hash、全文、空间索引,需根据场景选择,建议用于高频查询、关联字段、排序等,避免重复率高或... 目录一、索引是什么?能干嘛?核心作用:二、索引的 4 种主要类型(附通俗例子)1. BTree 索引(

Java Web实现类似Excel表格锁定功能实战教程

《JavaWeb实现类似Excel表格锁定功能实战教程》本文将详细介绍通过创建特定div元素并利用CSS布局和JavaScript事件监听来实现类似Excel的锁定行和列效果的方法,感兴趣的朋友跟随... 目录1. 模拟Excel表格锁定功能2. 创建3个div元素实现表格锁定2.1 div元素布局设计2.

SpringBoot连接Redis集群教程

《SpringBoot连接Redis集群教程》:本文主要介绍SpringBoot连接Redis集群教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1. 依赖2. 修改配置文件3. 创建RedisClusterConfig4. 测试总结1. 依赖 <de

Redis 配置文件使用建议redis.conf 从入门到实战

《Redis配置文件使用建议redis.conf从入门到实战》Redis配置方式包括配置文件、命令行参数、运行时CONFIG命令,支持动态修改参数及持久化,常用项涉及端口、绑定、内存策略等,版本8... 目录一、Redis.conf 是什么?二、命令行方式传参(适用于测试)三、运行时动态修改配置(不重启服务

MySQL DQL从入门到精通

《MySQLDQL从入门到精通》通过DQL,我们可以从数据库中检索出所需的数据,进行各种复杂的数据分析和处理,本文将深入探讨MySQLDQL的各个方面,帮助你全面掌握这一重要技能,感兴趣的朋友跟随小... 目录一、DQL 基础:SELECT 语句入门二、数据过滤:WHERE 子句的使用三、结果排序:ORDE

gitlab安装及邮箱配置和常用使用方式

《gitlab安装及邮箱配置和常用使用方式》:本文主要介绍gitlab安装及邮箱配置和常用使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1.安装GitLab2.配置GitLab邮件服务3.GitLab的账号注册邮箱验证及其分组4.gitlab分支和标签的