【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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

BAHD酰基转移酶对紫草素的手性催化-文献精读105

Two BAHD Acyltransferases Catalyze the Last Step in the Shikonin/Alkannin Biosynthetic Pathway 两个BAHD酰基转移酶催化了紫草素/左旋紫草素生物合成途径中的最后一步 一个BAHD酰基转移酶专门催化紫草素的酰基化,而另一个BAHD酰基转移酶则仅催化紫草素的对映…

C语言初阶力扣刷题——349. 两个数组的交集【难度:简单】

1. 题目描述 力扣在线OJ题目 给定两个数组,编写一个函数来计算它们的交集。 示例: 输入:nums1 [1,2,2,1], nums2 [2,2] 输出:[2] 输入:nums1 [4,9,5], nums2 [9,4,9,8,4] 输出:[9,4] 2. 思路 直接暴力…

在Docker 容器中安装 Oracle 19c

在 Docker 容器中安装 Oracle 19c 是可行的,但它相较于其他数据库(如 MySQL、PostgreSQL 等)会复杂一些,因为 Oracle 数据库有一些特定的要求,如操作系统和库的依赖,以及许可证问题。 不过,Ora…

WGCLOUD使用介绍 - 如何监控ActiveMQ和RabbitMQ

根据WGCLOUD官网的信息,目前没有针对ActiveMQ和RabbitMQ这两个组件专门做适配 不过可以使用WGCLOUD已经具备的通用监测模块:进程监测、端口监测或者日志监测、接口监测 来对这两个组件进行监控

初学stm32 --- FreeRTOS移植

目录 移植前准备 1. 基础工程 2. FreeRTOS 源码 添加 FreeRTOS 文件 1. 添加 FreeRTOS 源码 2. 将文件添加到工程 3. 添加头文件路径 4. 添加 FreeRTOSConfig.h 文件 (1) FreeRTOSConfig.h 获取途径一 (2) FreeRTOSConfig.h 获取途径二 (3) FreeRTOSConfig.h 获取途径…

ThreadLocal概述、解决SimpleDateFormat出现的异常、内存泄漏、弱引用、remove方法

①. ThreadLocal简介 ①. ThreadLocal是什么 ①. ThreadLocal本地线程变量,线程自带的变量副本(实现了每一个线程副本都有一个专属的本地变量,主要解决的就是让每一个线程绑定自己的值,自己用自己的,不跟别人争抢。通过使用get()和set()方法,获取默认值或将其值更改为当前线程…

【2024年 CSDN博客之星】我的2024年创作之旅:从C语言到人工智能,个人成长与突破的全景回顾

我的2024年创作之旅:从C语言到人工智能,个人成长与突破的全景回顾 引言 回望2024年,我不仅收获了技术上的成长,更收获了来自CSDN平台上无数粉丝、朋友以及网友们的支持与鼓励。在这条创作之路上,CSDN不仅是我展示技术成…

Windows11恢复传统右键菜单

Windows11恢复传统右键菜单 执行下面的命令(管理员下) reg add "HKCU\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\InprocServer32" /f /vetaskkill /f /im explorer.exestart explorer.exe或者 reg add "HKCU\Software\Classes\CLSID\{8…

PCIE模式配置

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

WPS数据分析000008

目录 一、替换 通配符 求出橙色底纹单元格的和 二、定位 拆分并填充内容 删除空行 一、替换 快捷键ctrlh 注意:限制数据区域。 若为单元格,表示选择整个工作表。 通配符 求出橙色底纹单元格的和 第一步:查找出橙色单元格,c…

Excel制作合同到期自动提醒!

大家好,我是小鱼。 今天分享一下如何利用Excel制作合同到期提醒表,实现Excel表格自动计算合同到期日和天数,根据合同状态和到期天数自动填充颜色提醒,超实用。先看一下效果,已经到期的合同会自动被填充为红色&#xf…

GestureDetector组件的功能与用法

文章目录 1 概念介绍2 使用方法3 示例代码 我们在上一章回中介绍了ListView响应事件的内容,本章回中将介绍GestureDetector Widget.闲话休提,让我们一起Talk Flutter吧。 1 概念介绍 我们在这里介绍的GestureDetector是一个事件响应Widget,它可以响应双击事件&…

0 基础学运维:解锁 K8s 云计算运维工程师成长密码

前言:作为一个过来人,我曾站在技术的门槛之外,连电脑运行内存和内存空间都傻傻分不清,完完全全的零基础。但如今,我已成长为一名资深的k8s云计算运维工程师。回顾这段历程,我深知踏上这条技术之路的艰辛与不…

【Unity】 HTFramework框架(五十九)快速开发编辑器工具(Assembly Viewer + ILSpy)

更新日期:2025年1月23日。 Github源码:[点我获取源码] Gitee源码:[点我获取源码] 索引 开发编辑器工具MouseRayTarget焦点视角Collider线框Assembly Viewer搜索程序集ILSpy反编译程序集搜索GizmosElement类找到Gizmos菜单找到Gizmos窗口分析A…

飞牛NAS新增虚拟机功能,如果使用虚拟机网卡直通安装ikuai软路由(如何解决OVS网桥绑定失败以及打开ovs后无法访问飞牛nas等问题)

文章目录 📖 介绍 📖🏡 演示环境 🏡📒 飞牛NAS虚拟机安装爱快教程 📒🛠️ 前期准备🌐 网络要求💾 下载爱快镜像🚀 开始安装💻 开启IOMMU直通🌐 配置网络🚨 解决OVS网桥绑定失败以及打开ovs后无法访问飞牛nas等问题➕ 创建虚拟机🎯 安装ikuai💻 进…

嵌入式蓝桥杯电子赛嵌入式(第14届国赛真题)总结

打开systic 生成工程编译查看是否有问题同时打开对应需要的文档 修改名称的要求 5.简单浏览赛题 选择题,跟单片机有关的可以查相关手册 答题顺序 先从显示开始看 1,2 所以先打开PA1的定时器这次选TIM2 从模式、TI2FP2二通道、内部时钟、1通道设为直接2通道设置…

C# volatile 使用详解

总目录 前言 在多线程编程中,确保线程之间的正确同步和可见性是一个关键挑战。C# 提供了多种机制来处理这些挑战,其中之一就是 volatile 关键字。它用于指示编译器和运行时环境不要对特定变量进行某些优化,以保证该变量的读写操作是线程安全…

基于OSAL的嵌入式裸机事件驱动框架——整体架构调度机制

参考B站up主【架构分析】嵌入式祼机事件驱动框架 感谢大佬分享 任务ID : TASK_XXX TASK_XXX 在系统中每个任务的ID是唯一的,范围是 0 to 0xFFFE,0xFFFF保留为SYS_TSK_INIT。 同时任务ID的大小也充当任务调度的优先级,ID越大&#…

理解C++中的右值引用

右值引用,顾名思义,就是对一个右值进行引用,或者说给右值一个别名。右值引用的规则和左值一用一模一样,都是对一个值或者对象起个别名。 1. 右值引用和左值引用一样,在定义的同时必须立即赋值,如果不立即赋…

寒假1.23

题解 web:[极客大挑战 2019]Secret File(文件包含漏洞) 打开链接是一个普通的文字界面 查看一下源代码 发现一个链接,点进去看看 再点一次看看,没什么用 仔细看,有一个问题,当点击./action.ph…