【ProtoBuf 安装】ProtoBuf在window/Linux下的安装 创建/删除swap分区

文章目录

  • 1.ProtoBuf在window下的安装
  • 2.ProtoBuf在Linux下的安装
    • 创建swap分区
    • 命令解析
    • 关闭swap分区
    • 删除swap分区的影响

1.ProtoBuf在window下的安装

1、下载ProtoBuf编译器
下载地址:https://github.com/protocolbuffers/protobuf/releases

如果要在 C++ 下使用 ProtoBuf,可以选择cpp.zip;
如果要在 JAVA 下使用 ProtoBuf,可以选择java.zip;
其他语言选择对应的链接即可。
希望支持全部语言,选择 all.zip。
在这里插入图片描述
下载之后将压缩包解压到本地⽬录下。解压后的⽂件内包含bin、include⽂件,以及⼀个readme.txt。

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

3、检查是否配置成功
打开cmd,输⼊:

protoc --version

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

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

下载命令

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

2、安装ProtoBuf
进⼊解压好的⽂件,执⾏以下命令:

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

make check报错

test的模块⾥⾯有⾮常多的测试⽤例,这些⽤例对服务器环境要求特别严格,需要增⼤下swap分区,具体操作可参考:https://blog.csdn.net/AlexWang30/article/details/90341172
(建议可以先扩⼤3G,再执⾏make check 如果还是报错,再扩⼤到5G重新执⾏)

创建swap分区

  1. 使用命令检查 Ubuntu 系统的SWAP 分区
sudo swapon --show
  1. 创建 swap 的文件(分配 1G 的swap分区大小)
sudo fallocate -l 1G /swapfile

此时可能会显示

fallocate: fallocate failed: Text file busy

此时执行

swapoff -a

再执行

sudo fallocate -l 1G /swapfile
  1. 执行以下命令为 swapfile 文件设置正确的权限:
sudo chmod 600 /swapfile
  1. 使用 mkswap 实用程序在文件上设置 Linux SWAP 区域:
sudo mkswap /swapfile
  1. 使用以下命令激活 swap 文件:
sudo swapon /swapfile
  1. 要让创建好的 swap 分区永久生效,可以将 swapfile 路径内容写入到 /etc/fstab 文件当中 :
sudo cp /etc/fstab /etc/fstab.bak
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

命令总结

sudo swapon --show
sudo fallocate -l 1G /swapfile
fallocate: fallocate failed: Text file busy
swapoff -a
sudo fallocate -l 1G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
sudo cp /etc/fstab /etc/fstab.bak
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

命令解析

这些命令是用来创建一个新的swap文件,并配置系统使用它的过程。每个命令的功能如下:

  1. sudo swapon --show
    • 功能: 显示当前系统已启用的swap设备(包括swap分区和swap文件)。这可以用来确认当前的swap状态,检查是否已启用swap。
  2. sudo fallocate -l 1G /swapfile
    • 功能: 使用fallocate命令创建一个大小为1GB的swap文件。fallocate是一个高效的创建文件的工具,它直接分配文件空间而不进行数据填充。不过你遇到的错误:“fallocate failed: Text file busy”通常表示当前某些文件正在被使用,导致无法操作。
    • 解决方案:你可以先关闭任何正在使用swap的服务(例如swapoff),然后再尝试执行这个命令。
  3. swapoff -a
    • 功能: 禁用所有的swap设备或swap文件。这个命令确保在创建或修改swap文件时不会有活动的swap设备在运行,这对于创建或修改swap文件是必须的。
  4. sudo fallocate -l 1G /swapfile
    • 功能: 重新尝试创建1GB大小的swap文件。这个命令会创建一个名为/swapfile的文件,文件大小为1GB。
  5. sudo chmod 600 /swapfile
    • 功能: 设置/swapfile文件的权限为600(仅所有者有读写权限),确保该文件的安全性。只有root用户才能访问这个swap文件,以防止普通用户对它进行修改或读取。
  6. sudo mkswap /swapfile
    • 功能:/swapfile文件格式化为swap格式。这一步将会为文件配置swap标记,使其可以作为交换空间使用。
  7. sudo swapon /swapfile
    • 功能: 启用/swapfile作为交换空间(swap)。通过这条命令,系统将开始使用/swapfile文件来扩展虚拟内存。
  8. sudo cp /etc/fstab /etc/fstab.bak
    • 功能: 备份/etc/fstab文件。/etc/fstab是一个配置文件,记录了系统如何挂载硬盘分区、swap文件等。备份这个文件是为了防止在后续修改时发生错误,可以随时恢复。
  9. echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
    • 功能: 将一行新的配置添加到/etc/fstab文件中。该配置表示在启动时,系统会自动挂载/swapfile作为swap分区。tee命令将内容追加到文件并同时输出,确保该配置在系统启动时自动加载。

总结

这些命令的目的是创建一个新的swap文件并配置系统以便在启动时自动挂载它。流程大致如下:

  1. 禁用当前的swap设备(swapoff -a)。
  2. 创建一个新的swap文件(/swapfile)。
  3. 格式化该文件为swap格式(mkswap)。
  4. 启用这个swap文件(swapon)。
  5. 配置系统在启动时自动启用该swap文件(编辑/etc/fstab)。

这样,在系统每次启动时,/swapfile就会自动作为swap使用,帮助扩展系统的虚拟内存。

关闭swap分区

要删除在 Ubuntu 上创建的 swap 文件,你可以按照以下步骤操作:

  1. 关闭 swap 文件: 先关闭 swap 文件,确保它不再被使用:

    sudo swapoff /swapfile
    
  2. 删除 swap 文件: 删除 swap 文件:

    sudo rm /swapfile
    
  3. 更新 /etc/fstab 文件: 打开 /etc/fstab 文件,删除你之前添加的那一行关于 /swapfile 的配置:

    sudo nano /etc/fstab
    

    删除类似以下的行:

    /swapfile none swap sw 0 0
    

    保存并退出编辑器。

  4. 检查是否生效: 你可以使用 swapon --show 检查是否已经没有 swap 文件了。

删除swap分区的影响

删除 swap 文件不会导致数据丢失。swap 只是用来扩展系统内存的,如果你删除 swap 文件,系统将无法再使用硬盘空间来模拟内存。如果你的系统在没有足够物理内存的情况下运行某些内存密集型程序,可能会遇到性能下降,或者在内存不足时发生程序崩溃,但不会直接导致数据丢失。

如果你计划长期不使用 swap,可以考虑重新评估系统的内存配置,或者增加物理内存来减少对 swap 的依赖。如果是临时解决方案,删除 swap 后最好保持系统监控,避免因内存不足导致其他问题。

如果修改了安装⽬录即执行了./configure --prefix=/usr/local/protobuf,那么还需要在/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 
libprotoc 3.21.11

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

day7手机拍照装备

对焦对不上:1、光太暗;2、离太近;3、颜色太单一没有区分点 滤镜可以后期P 渐变灰滤镜:均衡色彩,暗的地方亮一些,亮的地方暗一些 中灰滤镜:减少光差 手机支架:最基本70cm即可 手…

vue事件总线(原理、优缺点)

目录 一、原理二、使用方法三、优缺点优点缺点 四、使用注意事项具体代码参考: 一、原理 在Vue中,事件总线(Event Bus)是一种可实现任意组件间通信的通信方式。 要实现这个功能必须满足两点要求: (1&#…

分享|instructionfine-tuning 指令微调是提高LLM性能和泛化能力的通用方法

《生成式AI导论》课程中,李宏毅老师提到一篇关于“ instruction fine-tuning” 指令微调的论文: 《Scaling Instruction-Finetuned Language Models》 摘要分享: 事实证明, 在一组以指令形式表达的数据集上微调语言模型可以提…

拟合损失函数

文章目录 拟合损失函数一、线性拟合1.1 介绍1.2 代码可视化1.2.1 生成示例数据1.2.2 损失函数1.2.3 绘制三维图像1.2.4 绘制等高线1.2.5 损失函数关于斜率的函数 二、 多变量拟合2.1 介绍2.2 代码可视化2.2.1 生成示例数据2.2.2 损失函数2.2.3 绘制等高线 三、 多项式拟合3.1 介…

unity商店插件A* Pathfinding Project如何判断一个点是否在导航网格上?

需要使用NavGraph.IsPointOnNavmesh(Vector3 point) 如果点位于导航网的可步行部分,则为真。 如果一个点在可步行导航网表面之上或之下,在任何距离,如果它不在更近的不可步行节点之上 / 之下,则认为它在导航网上。 使用方法 Ast…

2025美国大学生数学建模竞赛美赛E题成品参考论文(48页)(含模型,可运行代码,求解结果)

2025美国大学生数学建模竞赛E题成品参考论文 目录 一、问题重述 二、问题分析 三、模型假设 四、模型建立与求解 4.1问题1 4.1.1问题1思路分析 4.1.2问题1模型建立 4.1.3问题1代码(仅供参考) 4.1.4问题1求解结果(仅供参考&…

开源音乐管理软件Melody

本文软件由网友 heqiusheng 推荐。不过好像已经是一年前了 😂 简介 什么是 Melody ? Melody 是你的音乐精灵,旨在帮助你更好地管理音乐。目前的主要能力是帮助你将喜欢的歌曲或者音频上传到音乐平台的云盘。 主要功能包括: 歌曲…

PCIE模式配置

对于VU系列FPGA,当DMA/Bridge Subsystem for PCI Express IP配置为Bridge模式时,等同于K7系列中的AXI Memory Mapped To PCI Express IP。

maven的打包插件如何使用

默认的情况下,当直接执行maven项目的编译命令时,对于结果来说是不打第三方包的,只有一个单独的代码jar,想要打一个包含其他资源的完整包就需要用到maven编译插件,使用时分以下几种情况 第一种:当只是想单纯…

反向代理模块

1 概念 1.1 反向代理概念 反向代理是指以代理服务器来接收客户端的请求,然后将请求转发给内部网络上的服务器,将从服务器上得到的结果返回给客户端,此时代理服务器对外表现为一个反向代理服务器。 对于客户端来说,反向代理就相当…

Java 大视界 -- Java 大数据与碳中和:能源数据管理与碳排放分析(66)

💖亲爱的朋友们,热烈欢迎来到 青云交的博客!能与诸位在此相逢,我倍感荣幸。在这飞速更迭的时代,我们都渴望一方心灵净土,而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识,也…

《企业应用架构模式》笔记

领域逻辑 表模块和数据集一起工作-> 先查询出一个记录集,再根据数据集生成一个(如合同)对象,然后调用合同对象的方法。 这看起来很想service查询出一个对象,但调用的是对象的方法,这看起来像是充血模型…

《剪映5.9官方安装包》免费自动生成字幕

(避免失效建议存自己网盘后下载)剪映5.9官方Win.Mac 链接:https://pan.xunlei.com/s/VOHc-Fg2XRlD50MueEaOOeW1A1?pwdawtt# 官方唯一的免费版,Win和Mac都有,此版本官方已下架,觉得有用可转存收藏&#xf…

基于RIP的MGRE VPN综合实验

实验拓扑 实验需求 1、R5为ISP,只能进行IP地址配置,其所有地址均配为公有IP地址; 2、R1和R5间使用PPP的PAP认证,R5为主认证方; R2与R5之间使用ppp的CHAP认证,R5为主认证方; R3与R5之间使用HDLC封…

006 mybatis关联查询(一对一、一对多)

文章目录 一对一查询SQL语句方法一:resultType方法二:resultMap创建扩展po类Mapper映射文件Mapper接口测试代码小结 一对多查询SQL语句修改po类Mapper映射文件Mapper接口测试代码 注意:因为一个订单信息只会是一个人下的订单,所以…

RKNN_C++版本-YOLOV5

1.背景 为了实现低延时,所以开始看看C版本的rknn的使用,确实有不足的地方,请指正(代码借鉴了rk官方的仓库文件)。 2.基本的操作流程 1.读取模型初始化 // 设置基本信息 // 在postprocess.h文件中定义,详见…

消息队列篇--通信协议篇--网络通信模型(OSI7层参考模型,TCP/IP分层模型)

一、OSI参考模型(Open Systems Interconnection Model) OSI参考模型是一个用于描述和标准化网络通信功能的七层框架。它由国际标准化组织(ISO)提出,旨在为不同的网络设备和协议提供一个通用的语言和结构,以…

【creo】CREO配置快捷键方式和默认单位

了解CREO工作目录设置 设置快捷方式启动目录,就能自动加载其中的配置。 一、通过键盘快捷方式 保存配置 creo_parametric_customization.ui 文件: 二、通过映射键录制 通过这种方式可以监听鼠标的点击事件。使用键盘快捷方式无法找到需要的动作时候可…

多模态论文笔记——TECO

大家好,这里是好评笔记,公主号:Goodnote,专栏文章私信限时Free。本文详细解读多模态论文TECO(Temporally Consistent Transformer),即时间一致变换器,是一种用于视频生成的创新模型&…

自由学习记录(32)

文件里找到切换颜色空间 fgui中的 颜色空间是一种总体使用前的设定 颜色空间,和半透明混合产生的效果有差异,这种问题一般可以产生联系 动效就是在fgui里可以编辑好,然后在unity中也准备了对应的调用手段,可以详细的使用每一个具…