【Protobuf速成指南】Win/Centos7下Protobuf安装教程

news2024/12/23 22:16:00

文章目录

  • 安装教程
    • 一、Windows
      • 1.1 下载编译器
      • 1.2 配置PATH
      • 1.3 其他依赖项
    • 二、Centos7
      • 2.1 安装必要的工具
      • 2.2 下载安装包
      • 2.3 安装

安装教程

以版本为V21.11为例说明

一、Windows

1.1 下载编译器

下载地址:链接,一直往下翻找到 V21.11版本

image-20230604191527393

win用户根据自己的电脑情况选择合适的版本
image-20230604191608785

1.2 配置PATH

解压后的文件包含下面的内容:

image-20230604192635078

我们需要将 bin 文件中的可执行程序配置到PATH环境变量中

image-20230604192854805

配置完成后再cmd窗口输入 protobuf --version 验证是否安装成功

image-20230604193005173

1.3 其他依赖项

 经过上面的操作,我们已经成功下载了 Proto 的编译器,可以简单地使用Protobuf 进行序列化和反序列化。如果要使用某些高级特性或功能,使用下面的指令一键解决依赖关系:(vcpkg 是一个开源的 C++ 库管理器,需要预先安装)

> vcpkg install protobuf protobuf:x64-windows

二、Centos7

2.1 安装必要的工具

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

2.2 下载安装包

image-20230604195151173

 我们上篇博客提到,Protobuf 是跨语言的协议,支持多种编程语言,包括 C++、Java、Python 等常见语言。这是由我们代码生成插件决定的

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

这里以 all.zip 举例说明

  1. 我们可以在本地下载并通过 sz 指令上传到我们的服务器

  2. 也可以使用wget指令拉取下载内容

    image-20230604200025990

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

🎯[对比]:

  • protoc-21.11-win64.zip 是 Protobuf 编译器的 Windows 版本发布文件,其中只包含 Protobuf 编译器本身及其代码生成插件

  • protobuf-all-21.11.zip 是 Protobuf 的完整源码包,除了编译器和插件之外,还包括了库的源代码、示例代码、用于测试的代码和其他相关文件。该源码包可以支持 C++、Java、Python、Go、C#、Ruby、PHP 和 Objective-C 等多种编程语言。更适合开发者使用

2.3 安装

  1. 解压zip包:unzipprotobuf-all-21.11.zip

  2. 进入解压后的文件,执行以下命令

    # 第⼀步执行autogen.sh,但如果下载的是具体的某⼀门语言,不需要执行这⼀步。
    ./autogen.sh
    # 第⼆步执行configure,有两种执行方式,任选其⼀即可,如下:
    # 1、protobuf默认安装在 /usr/local 目录,lib、bin都是分散的
    ./configure
    # 2、修改安装⽬录,统⼀安装在/usr/local/protobuf下
    ./configure --prefix=/usr/local/protobuf
    

    image-20230604201431978image-20230604201644095

  3. 依次执行

    make       # 执行15分钟左右
    make check # 执行15分钟左右  (非必要)
    sudo make install
    
  4. 在configure的时候,如果你采用第一种方式,那么就可以正常使用Protobuf了,如果采用第二种方式,还需要为lib和include配置路径

    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/
    
  5. 重新执行配置文件

    source /ect/profile
    
  6. 检测是否安装成功。有版本显示说明安装成功

    protoc --version
    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/611759.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

火爆全网,最全性能测试从0到1进阶总结,高阶内卷学习路线...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 例如:…

ArduPilot飞控开源代码之滤波设置

ArduPilot飞控开源代码之滤波设置 1. 源由2. 原理3. 调优3.1 ACC低通滤波 INS_ACCEL_FILTER3.2 GRYO低通滤波 INS_GYRO_FILTER3.3 陷波滤波 INS_HNTCH_ENABLE & INS_HNTC2_ENABLE 4. 总结5. 参考资料 1. 源由 对于飞控传感器来来说,振动噪声也是数据。 单纯从数…

yolov3

文章目录 前言一、主干网络darknet53二、从特征获取预测结果 前言 本文主要讲解yolov3的基本知识,如有错误请指出。 本文主要来自 博客1 博客2 一、主干网络darknet53 53是因为有53层。 1、darknet53没有使用pooling 来进行下采样,而是用一个33&…

电脑数据隐藏原因有哪些?电脑里隐藏的数据怎么恢复

电脑里隐藏的数据怎么恢复?电脑中的数据很容易被隐藏,这时候很多人可能会感到焦急和无助。不过不用担心,本文将为大家介绍三种方法,让你轻松找回被隐藏的数据! ※电脑数据隐藏原因有哪些 电脑数据可能会隐藏&#xf…

100天精通Golang:全面掌握Go语言的旅程

🌷 博主 libin9iOak带您 Go to Golang Language.✨ 🦄 个人主页——libin9iOak的博客🎐 🐳 《面试题大全》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 🌊 《I…

QLoRA:量化 LLM 的高效微调

此 repo 支持论文“QLoRA:量化 LLM 的高效微调”,旨在使对 LLM 研究的访问民主化。 QLoRA 使用bitsandbytes进行量化,并与 Hugging Face 的PEFT和transformers库集成。QLoRA 由华盛顿大学 UW NLP 小组的成员开发。 概述 我们介绍了 QLoRA&…

volatile - (C语言)

volatile关键字和const一样都是一种类型修饰符,用它修饰过的变量表示可以被某些编译器未知的因素更改,比如操作系统、硬件或者是其它线程等。 该关键字是不希望被编译器优化,从而达到稳定访问内存的目的。 示例代码: #include&…

FlinkUI和Flink常见问题解决

Flink 系统架构/Flink 作业提交运行的原理 我们编写的代码,对应着在Flink集群上执行的一个作业;所以我们在本地执行代码, 其实是idea开发环境中根据引入的依赖,先模拟启动一个Flink集群,然后把我们代码中定义好的操作,作为"作业",(job要打包好)然后将作业提…

双出口网络链路和设备双冗余案例

1、AR3模拟联通和电信运营商 2、2台防火墙vrrphrp双冗余,下联局域网vrrp 10.3.0.3地址,上联两条外线每条外线都分别vrrp虚拟一个地址1.1.1.1.和2.2.2.2.1。 3、防火墙外线地址和运营商给的外线地址不在同一个网段,每条都用vrrp冗余链路&#…

安装第三方库时的问题—复现带setup.py的项目

目录 题目分析: 正片开始: 题目分析: 事情的经过大致是这样: 今天在github上拿到一个处理时间序列的迁移学习项目的复现代码,项目文件如下所示: 或者我们来关注一下tl4sm这个文件夹里的东西&#xff1…

Tomcat的部署和优化(生命中的全部偶然,其实都是命中注定)

文章目录 一、Tomcat简介二、Tomcat 的构成三、Tomcat 功能组件结构四、Tomcat 请求过程五、Tomcat 服务部署六、Tomcat 虚拟主机配置七、Tomcat优化1.Tomcat 配置文件参数优化2.JVM优化 一、Tomcat简介 Tomcat 是 Java 语言开发的,Tomcat 服务器是一个免费的开放源…

【shiro】问题记录--为什么refreshToken方法走不下去

一、前言 最近做Jwt token续签的时候,在很多博客和下载的代码中,都是在JWTFilter中进行token的刷新,于是就按照了网上的代码进行尝试,代码如下: 1. 代码 在JWTFilter中的isAccessAllowed方法 目的:就是想…

STM32单片机RS485远程PID直流电机调速系统光电传感器

实践制作DIY- GC0137-RS485远程PID直流电机调速系统 基于STM32单片机设计-RS485远程PID直流电机调速系统 二、功能介绍: 主机:STM32F103C系列最小系统LCD1602直流电机光电测速MX15系列驱动模块4*4矩阵键盘RS485收发电路 从机:STM32F103C系…

Kubernetes配置管理

1. ConfigMap简介 Kubernetes ConfigMap是一种用于存储应用程序配置信息的对象。在企业中,我们通常会有许多不同的应用程序,每个应用程序都需要一些配置信息,例如数据库连接字符串、API密钥等等。这些配置信息可能会因为环境的不同而有所不同…

JavaSE进阶(day12,复习自用)

网络编程(通信) 网络通信三要素三要素概述、要素一:IP地址IP地址操作类-InetAddress要素二:端口号要素三:协议 UDP通信-快速入门UDP通信-广播、组播TCP通信-快速入门编写客户端代码编写服务端代码、原理分析 TCP通信-多…

30天从入门到精通TensorFlow1.x 第四天,TensorFlow中的计算图或数据流图

文章目录 一、接前一天二、计算图或数据流图1. 什么是计算图或者数据流图2. 为什么需要计算图或者数据流图3. 执行顺序和延迟加载在tf中的使用 一、接前一天 这几天主要学习了张量的创建方法,以及变量,变量命名域共享变量等概念。今天主要熟悉 数据流图…

网络隔离的生物制药企业,怎样实现安全的跨网文件交换?

在数字时代,生物制药企业结合现代技术追求和实现生物科技领域上的突破,研发及生产出更多满足人体健康需求的药物及医疗技术。由于生物制药企业,在进行某一领域的科研时通常周期较长、且涉及很多创新性成果,因此,科研数…

css:CSS 线性渐变linear-gradient

CSS 渐变使您可以显示两种或多种指定颜色之间的平滑过渡。 CSS 定义了两种渐变类型: 线性渐变(向下/向上/向左/向右/对角线)径向渐变(由其中心定义) 参考文档 CSS 线性渐变 https://www.w3school.com.cn/css/css3_…

访问学者带孩子去美国何时入境最好?

访问学者带孩子去美国入境的最佳时间会受到多种因素的影响,例如孩子的学校安排、访问学者的工作计划以及家庭的个人喜好。然而,以下是知识人网小编整理的一些常见考虑因素: 1. 学校假期:如果孩子正在就读学校,最佳时间…

uniapp 打包app wgt热更新和整包更新以及更新弹窗动画

app热更新是app项目最常见的功能,接下来我总结了当时做这个功能的过程,来交流学习一哈 热更新的流程步骤 在用户进入app就获取当前版本号与调用后端接口返回的版本号对比是否是最新的版本不是最新弹出弹窗让用户确认是否更新,点击更新下载w…