【ProtoBuf】2.环境配置

news2025/1/23 2:04:51

v2-51ee98b05ce2ada206b744b6ff86cbd1_r
————————————每一个不曾起舞的日子都是对生命的辜负。

ProtoBuf安装

  • 一. 安装Protofbuf-Win
  • 二. 配置环境变量
  • 三.验证是否添加成功
  • 四. Linux下Protobuf安装包的安装
    • 1. 下载ProtoBuf
    • 2. 解压压缩包
    • 3. 安装ProtoBuf
    • 4. 最后添加内容
    • 5.检查是否安装成功
  • 五. 升级g++到8版本

PS: 安装中途出现很多error,可能是轻量级云服务器性能不够,此外还有中间的一些配置错误问题,最终采用了虚拟机,解决问题的方案在解决专栏中

一. 安装Protofbuf-Win

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

image-20230520170513411

根据自己所需的版本安装即可,我使用的Win64,因此安装的是红框的版本。

二. 配置环境变量

  1. 下载完之后将压缩包解压在某一个位置,打开解压后的文件夹:

image-20230520170837110

  1. 进入bin目录,将其中的地址复制下来

image-20230520170922805

  1. 搜索:“编辑系统环境变量” 并进入

image-20230520171017675

点击:image-20230520171102815

接下来:image-20230520171201632

image-20230520171334285

三.验证是否添加成功

  1. 打开终端:快捷键(Win + R), 输入cmd进入终端:

image-20230520171448625

  1. 点击确定,进入终端后,输入:protoc --version

  2. 若出现下面结果,表示配置成功:

image-20230520171607866


四. Linux下Protobuf安装包的安装

1. 下载ProtoBuf

下载ProtoBuf前⼀定要安装依赖库:autoconf automake libtool curl make g++ 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下载地址21.11路径:Release Protocol Buffers v21.11 · protocolbuffers/protobuf (github.com)

如果是C++版本,就下载下面的文件:image-20230520172749489

如果想在各种语言都能使用(如Java、C++、php等),就下载第二个文件:image-20230520172855274

为了更好的兼容,我们选择下载第二个文件,通过右键复制链接,在xshell中输入:wget,并将刚才的链接粘贴到xshell中:image-20230520173113338

实际上就是将压缩包以及里面的代码下载到Linux环境。(下载需要一些时间。)

image-20230520173658847

下载完成。

2. 解压压缩包

命令:unzip protobuf-all-21.11.zip

image-20230520173838115

解压后的这个目录中就是源码内容。

image-20230520173941510

通过里面的文件就可以将程序真正的安装了。

3. 安装ProtoBuf

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

image-20230520174227949

稍微等一等~

image-20230520174301153

完成。

  1. 输入:./configure --prefix=/usr/local/protobuf

再依次执⾏

make // 执⾏15分钟左右
make check // 执⾏15分钟左右
sudo make install
  1. 输入:make

(上一步操作生成了makefile,接下来就可以进行make,这一步消耗时间较长,大概15分钟)

image-20230520174642035

long time …

image-20230520180036526

  1. 输入make check

(这个过程是检测,是可有可无的)

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

image-20230520180237842

如果其中的test出现FAIL,即如下情况:

image-20230520210452117

这个问题是test的模块里面有非常多的测试用例,有些测试用例对服务器环境要求特别严格,需要增大下swap分区,但他是不影响我们后续正常使用的,可以跳过这一步。如果后续出现头文件报错,那是编译器版本比较低,因此我们需要将改g++升级到8,而我们普通安装的方式最高就是4.8.5因此,需要其他的方式配置。

  1. 输入sudo make install

image-20230521142706292

完成。

4. 最后添加内容

到此,需要你回忆⼀下在执⾏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

5.检查是否安装成功

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

cfy@139-159-150-152:~/install/protobuf-21.11$ protoc --version
libprotoc 3.21.11

五. 升级g++到8版本

上述提到,g++不提高到最新版本在后续操作会头文件报错,因此下面我们配置g++编译器

【解决】升级g++到8版本_每天都要进步呀~的博客-CSDN博客

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

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

相关文章

Java 高级应用-多线程-(一)实现 Runnable 接口与继承 Thread 类

1.1 程序、进程与线程 • 程序(program):为完成特定任务,用某种语言编写的一组指令的集合。即指一段 静态的代码,静态对象。 • 进程(process):程序的一次执行过程,或是正…

支持图片扩展等AI功能,PS 2023 v24.5 安装教程

主要功能 PS发布了革命性的AI功能,创意填充,创意工具,图像预设,智能移除,上下文任务栏,智能渐变。 “创意填充”是一套具有革命性且神奇的全新功能,它由 AI 提供支持,基于您与生俱…

Spring Boot如何实现定时任务调度?

Spring Boot如何实现定时任务调度? Spring Boot提供了非常方便的方式来实现定时任务调度,我们可以使用Spring框架自带的Scheduled注解来实现。在本文中,我们将介绍如何使用Scheduled注解进行定时任务调度。 什么是定时任务调度? …

网瘾少年转行软件测试,月薪20k? 叛逆少年终归成长...

前言: 高中住校期间沉迷游戏(DNF),尤其是高三那年,晚上翻墙出去通宵,白天上课睡觉,高考自然是考了个稀碎,高考结束那个暑假刚开始觉得整个人都自由了,爸妈看我没考上大学,知道我心情…

使用kong网关来实现负载均衡

一、负载均衡 当前一个服务进行多实例部署后,外部调用其中任意一个服务地址都可以得到响应。但是外部不可能记住也不应该记住所有的服务地址,这个时候就需要一个统一入口提供给外部进行调用,类似提供一个虚拟主机形式进行实现。后续就请求这…

Socket(七)

文章目录 1. 单文件服务器2. 重定向器Redirector3. 功能完备的HTTP服务器 1. 单文件服务器 要研究HTTP服务器,先从一个简单的服务器开始,无论接受什么请求,这个服务器都始终发送同一个文件。这个单文件服务器名为SingleFileHTTPServer&#…

泛型的介绍以及原理

目录 一、前言 二、什么泛型 三、为什么要使用泛型 3.1、保证了类型的安全性。 3.2、消除强制转换 3.3、提高程序的性能 3.4、 提高了代码的重用性 四、如何使用泛型 4.1、 泛型类 4.2、泛型接口 4.3、泛型方法 五、泛型通配符 5.1、无边界的通配符 5.2、固定上边…

telnet 120.XX8888会超时或者无反应,防火墙加入8888,安全组也加入8888,但是访问120.XX:8888也没有反应

⚠️命令都是远程登录的哦 选这个远程连接: 初次密码自己设置别忘了 1、看是否8888端口是否有正常监听 netstat -ntlp我这边清楚看到没有8888 2、如果没有监听是无法连接,需要安装对应的程序同时监听8888端口 比如我想用宝塔面板 我就需要下载宝塔面…

一步步入门编写PHP扩展

1、写在最前 随着互联网飞速发展,lamp架构的流行,php支持的扩展也越来越多,这样直接促进了php的发展。 但是php也有脚本语言不可避免的问题,性能比例如C等编译型语言相差甚多,所以在考虑性能问题的时候最好还是通过php…

00后实在太强了,98年的我被卷废了,太离谱了...

前言 最近在公司我真的感受到了什么叫“卷”,以往的我划划水日子过的轻轻松松,直到公司最近招了一个00后进来,真的让我感受到了危机,刚进来工资就和我差不多,我刚开始其实有点不太舒服,凭什么我辛辛苦苦干…

在pycharm中调用qt界面功能

目录 一、新建designer文件 1、打开pycharm中的designer 2、创建个widget 3、拖动几个简单按钮 4、保存一下 5、右击test1.ui 这边首先环境已经配置完毕,可以参考之前写的博客: 关于PyQt5的环境搭建_Littlehero_121的博客-CSDN博客 一、新建desi…

如何使用PHM技术提高汽车工业的效率和性能?

在汽车工业中,预测性健康管理(PHM)技术正日益受到关注。作为一种基于数据驱动的解决方案,PHM技术通过实时监测和分析设备和系统的状态,实现对设备健康状况的预测和管理。 图.汽车制造(iStock) 汽…

代码示范【FabEdge v0.8.0】配置 connector 公开端口

FabEdge项目简介: FabEdge是博云在2021年8月发起,基于Kubernetes 构建的专注于边缘计算场景的容器网络方案,支持 KubeEdge 、SuperEdge、OpenYurt 等主流边缘计算框架。旨在解决边缘计算场景下容器网络配置管理复杂、网络割裂互不通信、缺少…

hadoop单机版部署

1.下载hadoop wget --no-check-certificate https://mirrors.bfsu.edu.cn/apache/hadoop/common/hadoop-3.3.1/hadoop-3.3.1.tar.gz 2.解压重命名 tar -zxvf hadoop-3.3.1.tar.gz mv hadoop-3.3.1.tar.gz hadoop 3.编辑hosts vim /etc/hosts 172.17.1.1 hadoop925 4.进入配置…

4.Apache网页优化

文章目录 Apache网页优化网页压缩网页缓存隐藏版本信息Apache防盗链 Apache网页优化 Apache网页优化 网页压缩网页缓存 Apache安全优化 隐藏版本信息配置防盗链 网页压缩 配置Apache的网页压缩功能,是使用gzip压缩算法来对网页内容进行压缩后再传输到客户端浏览器…

LNMT架构之反向代理负载均衡

目录 一、实验前提环境配置 (一)关闭防火墙,安装本地yum (二)部署tomcat (三)部署Mariadb (四)部署nginx 二、反向代理负载均衡 方法一:(轮…

【算法学习系列】07 - 无序数组中的局部最小值问题

文章目录 说明约束条件简单说下思路解决方案随机无序数组样本生成器算法实现验证代码进行大样本随机测试验证算法正确性 说明 在算法中,局部最小值是指一个函数在一个局部范围内的最小值。 具体而言,如果一个函数在一个小区间内的取值都比该区间内的其他…

C++:STL--priority_queue

文章目录 一.STL设计思想:容器适配器STL--stack的代码设计STL--queue的代码设计stack和queue的默认容器适配器deque的数据结构解析deque的存储结构示意图 二.C仿函数仿函数示例 三.STL--priority_queue(优先级队列)1.C优先级队列的数据结构2.priority_queue的实现框架比较函数(…

chatgpt赋能python:Python中创建画布的函数——matplotlib

Python中创建画布的函数——matplotlib Python作为一种强大的编程语言,拥有许多重要且广泛应用的模块和库。其中,matplotlib是一种用于制作高质量的图形和图表的库,而创建画布的函数便是其基础功能之一。 什么是matplotlib? Ma…

C语言---初始C语言

1、初始C语言 1、编译器主要有:Clang、GCC、WIN-TC、MSVC、Turbo C等 什么是编译? test.c----------------------------->test.exe 这个过程需要经过编译、链接等过程,而众多编译器实现的功能就是把我们写的test.c进行编译。 2、VS20…