当前位置: 首页 > news >正文

【ProtoBuf】ProtoBuf安装

文章目录

  • ProtoBuf 在 window 下的安装
    • 下载 ProtoBuf 编译器
    • 配置环境变量
    • 检查是否配置成功
  • ProtoBuf 在 Linux 下的安装
    • 下载ProtoBuf
    • 安装 ProtoBuf
    • 检查是否安装成功

ProtoBuf 在 window 下的安装

下载 ProtoBuf 编译器

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

可以不用下载最新版本,博主下载的是 v21.11 ,具体的下载根据自己电脑情况选择。

在这里插入图片描述
下载之后将压缩包解压到本地目录下。解压后的文件内包含 bin、include文件,以及一个readme.txt。

在这里插入图片描述

配置环境变量

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

在这里插入图片描述

检查是否配置成功

打开cmd,输入:

protoc --version  

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

在这里插入图片描述

走到这里,恭喜你 ProtoBuf 安装成功!!!

ProtoBuf 在 Linux 下的安装

下载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 下载地址: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

下载过程中可能出现一下问题;

第一个:
在这里插入图片描述这是 wget 下载时遇到的SSL 证书验证问题,系统无法验证 github.com 服务器证书的合法性 ,因为本地缺少能验证该证书颁发机构(Sectigo ECC Domain Validation Secure Server CA 等信息对应的机构)权限的相关证书,导致 wget 因安全校验不通过而报错,无法继续正常下载。

两个做法:
1、按提示,添加 --no-check-certificate 参数跳过证书验证,命令改为:

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

不过,跳过证书验证会有安全风险(比如可能连接到伪造站点),更推荐的做法是下面的哦。

2、更新证书库:

在 CentOS/RHEL 系统,可装 ca-certificates 包并更新:

yum install -y ca-certificates && update-ca-trust

Debian/Ubuntu 系统:

apt install -y ca-certificates && update-ca-certificates

更新后再用原 wget 命令,一般可正常验证证书。

注意:若身处特殊网络环境(如代理、防火墙限制),也可能影响证书验证,需排查网络配置。简单场景用 --no-check-certificate 临时解决;追求安全和规范,优先更新证书库来修复验证问题。

第二个:
在这里插入图片描述
原因可能有三个:网络带宽 / 延迟;GitHub 访问限制;wget 超时配置。

解决方法有四个:重试或更换网络重试;增加 wget 超时时间;借助代理或镜像;本地浏览器下载后上传。

增加 wget 超时时间:用 -T(设置超时秒数,默认一般几十秒)、–waitretry(重试间隔)等参数延长等待,比如:

wget -T 120 --waitretry=5 https://github.com/protocolbuffers/protobuf/releases/download/v21.11/protobuf-all-21.11.zip

下载完成后,解压zip包:

unzip protobuf-all-21.11.zip 

解压完成后,会生成 protobuf-21.11 文件,进入文件:

cd protobuf-21.11 

安装 ProtoBuf

进入解压好的文件,执行以下命令:

第一步执行autogen.sh,但如果下载的是具体的某一门语言,不需要执行这一步。

./autogen.sh

第二步执行configure,有两种执行方式,任选其一即可,如下:

1、protobuf默认安装在 /usr/local 目录,lib、bin都是分散的

./configure

2、修改安装目录,统一安装在/usr/local/protobuf下

./configure --prefix=/usr/local/protobuf

3、再依次执行

make // 大概执行 15分钟左右
make check //  大概执行 15分钟左右
sudo make install

有些人可能会在 make check 出现错误,例如:
在这里插入图片描述
出现以上错误的原因是test的模块里面有非常多的测试用例,这些用例对服务器环境要求特别严格,需要增大下swap分区。
具体操作可参考: https://blog.csdn.net/AlexWang30/article/details/90341172

(建议可以先扩大3G,再执行 make check 。如果还是报错,再扩大到5G重新执行 make check )

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

在这里插入图片描述

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

1、先命令进入:

sudo vim /etc/profile

2、添加内容如下:

#(动态库搜索路径) 程序加载运行期间查找动态链接库时指定除了系统默认路径之外的其他路径
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

检查是否安装成功

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

root@MyComputer:~/protobuf-21.11# protoc --version
libprotoc 3.21.11

走到这里,恭喜你 ProtoBuf安装成功!!!

http://www.dtcms.com/a/308443.html

相关文章:

  • 力扣面试150(45/150)
  • 【C语言】深度剖析指针(三):回调机制、通用排序与数组指针逻辑
  • esp32s3 + ov2640,给摄像头加上拍照功能,存储到sd卡
  • 109㎡中古风家装:北京业之峰在朝阳区绘就温馨画卷
  • 【实际项目1.2-西门子PLC的报警监控思路】
  • Java多线程详解(1)
  • C#反射的概念与实战
  • [2025CVPR-小样本方向]ImagineFSL:基于VLM的少样本学习的想象基集上的自监督预训练很重要
  • 三方支付详解
  • SQL 中 WHERE 与 HAVING 的用法详解:分组聚合场景下的混用指南
  • 大数据平台数仓数湖hive之拉链表高效实现
  • 深度学习入门:用pytorch跑通GitHub的UNET-ZOO项目
  • 云服务器数据库
  • Camx-查看sensor mode 和效果参数
  • (LeetCode 每日一题) 2683. 相邻值的按位异或 (位运算)
  • 网络操作系统与应用服务器-1
  • SIwave 中 SIwizard 的 500 多个标准列表
  • 代码详细注释:演示多线程如何安全操作共享变量,使用互斥锁避免数据竞争。
  • Linux 文件系统基本管理
  • minidocx: 在C++11环境下运行的解决方案(二)
  • 网络攻击新态势企业级安全防御指南
  • Git分支管理:每个分支为什么这么命名?
  • Acrobat DC 应用安全配置:沙箱防护、数字签名
  • 了解微前端和SSO单点登录
  • Linux/Ubuntu 系统中打开火狐firefox、chromium浏览器失败
  • (三)从零搭建unity3d机器人仿真:使用WheelCollider实现turtlebot轮子差速运动
  • Linux系统编程-gcc(黑马笔记)
  • 译 | 用于具有外生特征的时间序列预测模型TimeXer
  • JavaScript 大数运算!
  • Abp+ShardingCore+EFCore.BulkExtensions使用案例