【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

相关文章

SQL server数据库如何下载和安装

《SQLserver数据库如何下载和安装》本文指导如何下载安装SQLServer2022评估版及SSMS工具,涵盖安装配置、连接字符串设置、C#连接数据库方法和安全注意事项,如混合验证、参数化查... 目录第一步:打开官网下载对应文件第二步:程序安装配置第三部:安装工具SQL Server Manageme

java使用protobuf-maven-plugin的插件编译proto文件详解

《java使用protobuf-maven-plugin的插件编译proto文件详解》:本文主要介绍java使用protobuf-maven-plugin的插件编译proto文件,具有很好的参考价... 目录protobuf文件作为数据传输和存储的协议主要介绍在Java使用maven编译proto文件的插件

使用Docker构建Python Flask程序的详细教程

《使用Docker构建PythonFlask程序的详细教程》在当今的软件开发领域,容器化技术正变得越来越流行,而Docker无疑是其中的佼佼者,本文我们就来聊聊如何使用Docker构建一个简单的Py... 目录引言一、准备工作二、创建 Flask 应用程序三、创建 dockerfile四、构建 Docker

从入门到精通MySQL联合查询

《从入门到精通MySQL联合查询》:本文主要介绍从入门到精通MySQL联合查询,本文通过实例代码给大家介绍的非常详细,需要的朋友可以参考下... 目录摘要1. 多表联合查询时mysql内部原理2. 内连接3. 外连接4. 自连接5. 子查询6. 合并查询7. 插入查询结果摘要前面我们学习了数据库设计时要满

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.