【Linux】软件包管理与vim工具使用详解

Linux 软件包管理与vim工具使用详解

  • 什么是软件包
  • Liunx安装软件
    • Linux下载软件的过程(Ubuntu、Centos、other)
  • centos7配置新的yum源
    • 操作系统的好坏评估---生态问题
    • 如何安装软件
    • 查看软件包
    • 卸载软件
  • Linux编辑器-vim使用
  • 简单vim配置
  • Linux编译器-gcc/g++使用
    • 预处理(进行宏替换)
    • 编译(生成汇编)
    • 汇编(生成机器可识别代码)
    • 连接(生成可执行文件或库文件)
    • 静态库
    • 动态库
  • 安装C/C++静态库指令
  • 如何执行sudo命令?

在这里插入图片描述

🌏个人博客主页:个人主页
在这里插入图片描述

什么是软件包

  • 在Linux下安装软件, 一个通常的办法是下载到程序的源代码, 并进行编译, 得到可执行程序.

  • 但是这样太麻烦了, 于是有些人把一些常用的软件提前编译好, 做成软件包(可以理解成windows上的安装程序)放在一个服务器上, 通过包管理器可以很方便的获取到这个编译好的软件包, 直接进行安装.

  • 软件包和软件包管理器, 就好比 “App” 和 “应用商店” 这样的关系.

  • yum(Yellow dog Updater, Modified)是Linux下非常常用的一种包管理器. 主要应用在Fedora, RedHat, Centos等发行版上.

Liunx安装软件

  1. 源码安装(需要自己编译,生成可执行程序,容易出问题,比较麻烦)
  2. rpm安装(Liunx下面的安装包,需要自己找,有彼此的依赖关系不好解决)
  3. yum安装(解决安装源,安装版本,安装依赖)

Linux下载软件的过程(Ubuntu、Centos、other)

在windows里面下载软件,我们可以通过应用商城直接下载。
在这里插入图片描述
这里的yum就相当于Liunx下面的应用商店,帮助我们下载软件。

在这里插入图片描述
yum怎么知道去哪里下载安装软件的呢?

yum有自己的配置文件,记录自己的搜索路径。

在这里插入图片描述

在这里插入图片描述

centos7配置新的yum源

# 切换到 root 用户
sudo su# 备份原有的 YUM 源配置文件
cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak# 下载新的 YUM 源配置文件
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo# 清除 YUM 缓存
yum clean all# 生成新的缓存
yum makecache# 验证新源是否有效
yum repolist# 更新已安装的包(可选)
yum update

操作系统的好坏评估—生态问题

在这里插入图片描述

📢注意事项:

关于 yum 的所有操作必须保证主机(虚拟机)网络畅通!!!

可以通过 ping 指令验证

ping www.baidu.com

在这里插入图片描述

如何安装软件

通过 yum, 我们可以通过很简单的一条命令完成 gcc 的安装

在这里插入图片描述

yum 会自动找到都有哪些软件包需要下载, 这时候敲 “y” 确认安装,出现 “complete” 字样, 说明安装完成。

📢注意事项:

安装软件时由于需要向系统目录中写入内容, 一般需要 sudo 或者切到 root 账户下才能完成。

yum安装软件只能一个装完了再装另一个.,正在yum安装一个软件的过程中,如果再尝试用yum安装另外一个软件,,yum会报错。

查看软件包

通过 yum list 命令可以罗列出当前一共有哪些软件包.。由于包的数目可能非常之多,这里我们需要使用 grep 命令只筛选出我们关注的包。

结果如下:

在这里插入图片描述

📢注意事项:

  • 软件包名称: 主版本号.次版本号.源程序发行号-软件包的发行号.主机平台.cpu架构.
  • “x86_64” 后缀:表示64位系统的安装包, “i686” 后缀表示32位系统安装包. 选择包时要和系统匹配.
  • “el7” :表示操作系统发行版的版本. “el7” 表示的是 centos7/redhat7. “el6” 表示 centos6/redhat6.
  • base :表示的是 “软件源” 的名称, 类似于 “小米应用商店”, “华为应用商店” 这样的概念

卸载软件

仍然是⼀条命令:

sudo yum remove [-y] lrzsz

Linux编辑器-vim使用

vi/vim的区别简单点来说,它们都是多模式编辑器,不同的是vim是vi的升级版本,它不仅兼容vi的所有指令,而且还有一些新的特性在里面。例如语法加亮,可视化操作不仅可以在终端运行,也可以运行于mac os、windows。

  1. vim的基本概念
    我们讲解vim的三种模式,分别是命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode),各模式的功能区分如下:
  • 正常/普通/命令模式(Normal mode)
    控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到 last line mode
  • 插入模式(Insert mode)
    只有在Insert mode下,才可以做文字输入,按「ESC」键可回到命令行模式。该模式是我们后面用的最频繁
    的编辑模式。
  • 末行模式(last line mode)
    文件保存或退出,也可以进行文件替换,找字符串,列出行号等操作。 在命令模式下,shift+: 即可进入该模
    式。要查看你的所有模式:打开vim,底行模式直接输入

在这里插入图片描述

1、快速跳动光标

  • gg:将光标快速移动到文本的开始位置(第一个字符)
  • Gshift + g:将光标快速移动到文本的结束位置(最后一个字符)
  • $shift + 4:将光标快速移动到所在行的最右侧
  • ^shift + 6:将光标快速移动到所在行的最左侧
  • n + Gn + shift + g:将光标快速移动到任意行

2、移动光标

  • h:光标向左移
  • j:光标向下移
  • k:光标向上移
  • l:光标向右移

3、复制/粘贴/剪切/删除

  • (n)yy:复制当前(n)行
  • (n)p:在光标所在行的下面粘贴(n行)
  • (n)dd:剪切、删除当前所在的(n)行

4、撤回/取消撤回

  • u:取消上一步执行的操作
  • Ctrl + r:取消上一次的撤回操作

5、字符的处理

  • (n)~或者n+shift ~:将光标后面的字符大小写转换

  • (n)r 或者n +r输入:将光标后面的字符全部替换为输入的字符

  • (n)x:向后删除删除光标所字符

  • X即n+shift+x:向前删除删除光标所在字符

R即shift + r:进入替换模式,此时光标所在的字符被替换为输入的字符

6、批量化(去)注释

批量化注释:

  1. 第一步:Ctrl + v
  2. 第二步:h, j, k, l选择要被注释的区域
  3. 第三步:shift + i
  4. 第四步://
  5. 第五步:Esc

批量化去注释:

  1. 第一步:Ctrl + v
  2. 第二步:h, j, k, l选择要被去注释的区域
  3. 第三步:d

7、多文件
在这里插入图片描述

第一步:vs filename(不退出vim情况下打开更多文件)底行模式中打开更多的文件

第二步:ctrl+ww 窗口光标切换 (光标在哪一个窗口,就在哪一个窗口进行操作)

底行模式

1、保存与退出

  • q(!):(强制)退出
  • w(!):(强制)保存
  • wq(!):(强制)保存并推出

2、不退出vim的情况下执行shell命令

  • ! + 命令

3、新建一个窗口(或打开另一个文件)

  • vs filename

4、搜索关键字

  • / + 关键字

简单vim配置

配置文件的位置

  • 在目录 /etc/ 下面,有个名为vimrc的文件,这是系统中公共的vim配置文件,对所有用户都有效。
  • 而在每个用户的主目录下,都可以自己建立私有的配置文件,命名为:“.vimrc”。例如,/root目录下,
  • 通常已经存在一个.vimrc文件,如果不存在,则创建之。
  • 切换用户成为自己执行 su ,进入自己的主工作目录,执行 cd ~
  • 打开自己目录下的.vimrc文件,执行 vim .vimr
    在这里插入图片描述
    如果家目录下面没有.vimrc文件需要自己创建
    在这里插入图片描述
    在 shell 中执行指令(想在哪个用户下让vim配置生效, 就在哪个用户下执行这个指令. 强烈 “不推荐” 直接在 root 下执行):

curl -sLf https://gitee.com/HGtz2222/VimForCpp/raw/master/install.sh -o ./install.sh && bash ./install.sh

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

接下来我们就可以在用vim写代码了,但是默认是两个空格缩进。

在这里插入图片描述

我们可以打开.vimrc进行修改样式

在这里插入图片描述

大小改成4即可

在这里插入图片描述

Linux编译器-gcc/g++使用

格式 gcc [选项] 要编译的文件 [选项] [目标文件]

在这里插入图片描述

在这里插入图片描述

预处理(进行宏替换)

预处理功能主要包括宏定义,文件包含,条件编译,去注释等。

预处理指令是以#号开头的代码行。
实例: gcc –E code.c –o code.i
选项“-E”,该选项的作用是让 gcc 在预处理结束后停止编译过程。
选项“-o”是指目标文件,“.i”文件为已经过预处理的C原始程序。

在这里插入图片描述
在这里插入图片描述

编译(生成汇编)

在这个阶段中,gcc 首先要检查代码的规范性、是否有语法错误等,以确定代码的实际要做的工作,在检查无误后,gcc 把代码翻译成汇编语言。

用户可以使用“-S”选项来进行查看,该选项只进行编译而不进行汇编,生成汇编代码。
实例: gcc –S code.i –o code.s

在这里插入图片描述
在这里插入图片描述

汇编(生成机器可识别代码)

汇编阶段是把编译阶段生成的“.s”文件转成目标文件
读者在此可使用选项“-c”就可看到汇编代码已转化为“.o”的二进制目标代码了
实例: gcc –c hello.s –o hello.o

在这里插入图片描述
在这里插入图片描述
此时,已经生成的可重定位的目标文件但是并不能执行,因为此时还缺少库里面的文件,如:printf库函数等,所以它并不是一个可执行文件,需要连接。

连接(生成可执行文件或库文件)

在成功编译之后,就进入了链接阶段。
实例: gcc code.o –o code

在这里插入图片描述

在这里插入图片描述

在这里涉及到一个重要的概念:函数库

在这里插入图片描述

我们的C程序中,并没有定义“printf”的函数实现,且在预编译中包含的“stdio.h”中也只有该函数的声明,而没有定义函数的实现,那么,是在哪里实“printf”函数的呢?

最后的答案是:系统把这些函数实现都被做到名为 libc.so.6 的库文件中去了,在没有特别指定时,gcc 会到
系统默认的搜索路径“/usr/lib”下进行查找,也就是链接到 libc.so.6 库函数中去,这样就能实现函数“printf”了,而这也就是链接的作用

ldd查看程序执行时依赖那些库
在这里插入图片描述

函数库一般分为静态库和动态库两种。
在这里插入图片描述

静态库

静态库是指编译链接时,把我们要访问的方法实现拷贝到自己的可执行程序中,其缀名一般为“.a”。

特点:比较浪费资源,可执行程序体积大,不依赖其他库,库丢失也无所谓,程序照样执行。

动态库

动态库与之相反,在编译链接时并没有把库文件的代码加入到可执行文件中,而是在程序执行时由运行时链接文件加载库,就是说程序在执行的时候它会跳到动态库里面执行,然后执行完在回来,这样可以节省系统的开销。

动态库一般后缀名为“.so”,如前面所述的 libc.so.6 就是动态库。gcc 在编译时默认使用动态库。

特点:一旦动态库缺失,所以程序都无法执行,比较节省资源,可执行程序体积小。

gcc默认生成的二进制程序,是动态链接的,这点可以通过 file 命令验证。

在这里插入图片描述

在这里插入图片描述

安装C/C++静态库指令

C静态库:sudo yum install -y glibc-static

C++静态库:sudo yum install -y libstdc+±static

如何执行sudo命令?

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

总结
Linux通过软件包管理器(如YUM)简化了软件安装与管理,将软件预编译为包供用户安装,避免了源码编译的复杂性。软件包如同Windows的安装程序,YUM是其“应用商店”。

安装软件可以通过源码、RPM包或YUM完成,其中YUM解决了依赖关系问题。配置YUM源需调整相关文件并清理缓存。

Vim作为Linux常用编辑器,分为命令、插入和底行模式,支持快速移动、批量注释等功能,配置通过.vimrc实现。

GCC是Linux默认的C/C++编译器,编译过程包括预处理、编译、汇编和链接,生成静态库和动态库分别用于资源独立性和共享性。

通过Sudo权限可完成系统级软件管理,确保高效和安全的操作环境。
在这里插入图片描述

在这里插入图片描述

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

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

相关文章

Vue如何加载十万条数据

加载十万条数据到 Vue 应用中是一个相对复杂的问题,主要因为渲染大量数据可能会导致性能瓶颈,尤其是在前端性能较低的设备上。为了确保加载大量数据时,页面不会卡顿或崩溃,我们通常采取一些优化手段,以下是几种常用的方…

【Ant Design Pro】1. config 配置

前置说明 这里我使用的是 simple 版本,并结合 antd pro 脚手架搭建(现在默认使用为 umi4 版本): 虽然这个文档好像已经好久没有更新了。 config 文件: config.ts // https://umijs.org/config/ import { defineConfi…

《实战OpenCV系列》专栏介绍

简介 本专栏由浅入深,详细介绍了使用OpenCV进行图像/视频处理的各方面知识,包括:图像显示、图像的数学运算、图像的裁剪与拼接、图像的像素操作、几何变换、直方图、图像滤波、色彩空间转换、边缘检测、形态学操作、模板匹配、视频处理、图像…

Mac启动服务慢问题解决,InetAddress.getLocalHost().getHostAddress()慢问题。

项目启动5分钟,很明显有问题。像网上其他的提高jvm参数就不说了,应该不是这个问题,也就快一点。 首先找到自己的电脑名称(用命令行也行,只要能找到自己电脑名称就行,这里直接在共享里看)。 复制…

Vue 项目中有哪些内存泄漏的场景,以及预防内存泄漏技巧

前言 即便是功能强大的 Vue.js 也无法完全避免内存泄漏的问题,内存泄漏不仅会影响应用的性能,还可能导致浏览器崩溃。因此,识别和解决 Vue 项目中的内存泄漏问题是确保项目稳定性和性能的关键。 本文将通俗易懂地介绍 Vue 项目中常见的内存泄…

微信小程序Webview与H5通信

背景 近期有个微信小程序需要用到web-view嵌套H5的场景,该应用场景需要小程序中频繁传递数据到H5进行渲染,且需要保证页面不刷新。 由于微信小程序与H5之间的通信限制比较大,显然无法满足于我的业务场景 探索 由于微信小程序与webview的环境是…

【JAVA】接口杂谈:Java中的比较器(Comparator 接口)

这篇来介绍自定义类型对象的比较方法,利用Comparable 接口和 Comparator 接口。 目录 问题引入: 一、Comparable 接口 1.1比较学生的年龄 方法: 结果: 1.2比较学生的姓名 方法: 结果: 1.3 案例再…

Pytorch使用手册- PyTorch 中 non_blocking 和 pin_memory() 的使用指南(专题十一)

1. 介绍 在许多 PyTorch 应用中,将数据从 CPU 转移到 GPU 是非常基础的操作。用户理解在设备间传输数据时最有效的工具和选项非常重要。本教程将重点讲解两种在 PyTorch 中进行设备间数据传输的关键方法:pin_memory() 和带有 non_blocking=True 选项的 to()。 1.1 你将学习…

数据结构 (19)二叉树

一、定义 二叉树(Binary Tree)是n个有限元素的集合,该集合或者为空、或者由一个称为根(root)的元素及两个不相交的、被分别称为左子树和右子树的二叉树组成,是有序树。若集合为空,则称该二叉树为…

路由策略与路由控制实验

AR1、AR2、AR3在互联接口、Loopback0接口上激活OSPF。AR3、AR4属于IS-IS Area 49.0001,这两者都是Level-1路由器,AR3、AR4的系统ID采用0000.0000.000x格式,其中x为设备编号 AR1上存在三个业务网段A、B、C(分别用Loopback1、2、3接…

flutter 解决webview加载重定向h5页面 返回重复加载问题

long time no see. 如果觉得该方案helps,点个赞,评论打个call,这是我前进的动力~ 通常写法: 项目里用的webview_flutter 正常webview处理返回事件 if (await controller.canGoBack()) {controller.goBack(); } else {Navigator…

Kubernetes集群操作

查看集群信息: kubectl get nodes 删除节点 (⽆效且显示的也可以删除) 后期如果 要删除某个节点,为了不增加其他节点的访问压力,先增加一个节点,再删除要删除的节点 语法 :kubect delete…

【C++】从零到一掌握红黑树:数据结构中的平衡之道

个人主页: 起名字真南的CSDN博客 个人专栏: 【数据结构初阶】 📘 基础数据结构【C语言】 💻 C语言编程技巧【C】 🚀 进阶C【OJ题解】 📝 题解精讲 目录 前言1 红黑树的概念**红黑树的五大性质** 2 红黑树的实现2.1 红黑树的结构…

支持ACME协议可免费申请SSL证书的多种渠道

目录 一、ACME 协议 二、ACMESSL可视化 三、ACME证书申请流程 三、ACME申请提交 四、使用 ACME 的好处 五、ACME总结 一、ACME 协议 ACME 协议是一种开放标准,旨在自动执行数字证书颁发和续订流程,它彻底改变了证书管理。ACME 的开发旨在简化整个…

Socket编程(TCP/UDP详解)

前言:之前因为做项目和找实习没得空,计算机网络模块并没有写成博客,最近得闲了,把计算机网络模块博客补上。 目录 一,UDP编程 1)创建套接字 2)绑定端口号 3)发送与接收数据 4&…

【人工智能-科普】图神经网络(GNN):与传统神经网络的区别与优势

文章目录 图神经网络(GNN):与传统神经网络的区别与优势什么是图神经网络?图的基本概念GNN的工作原理GNN与传统神经网络的不同1. 数据结构的不同2. 信息传递方式的不同3. 模型的可扩展性4. 局部与全局信息的结合GNN的应用领域总结图神经网络(GNN):与传统神经网络的区别与…

【知识分享】离散行业有哪些?

【大家好,我是唐Sun,唐Sun的唐,唐Sun的Sun。】 离散行业是指生产过程由一系列独立、非连续的工序或环节组成,产品形态和性质发生变化的行业,常见的离散行业有以下几类: 装备制造行业 包括通用装备制造、专…

【Spark源码分析】规则框架- `analysis`分析阶段使用的规则

analysis分析阶段使用的规则 规则批策略规则说明SubstitutionfixedPointOptimizeUpdateFields该规则优化了 UpdateFields 表达式链,因此看起来更像优化规则。但是,在处理深嵌套模式时,UpdateFields 表达式树可能会非常复杂,导致分…

Qt详解QUiLoader 动态加载UI文件

文章目录 详解 QUiLoader 模块的使用1. QUiLoader 简介1.1 应用场景 2. 准备工作2.1 添加模块依赖2.2 引入头文件 3. 使用 QUiLoader 加载界面3.1 示例代码form.uimain.cpp 4. 常用方法详解4.1 load函数原型作用参数返回值示例代码 4.2 createWidget函数原型作用参数返回值示例…

【Git 工具】用 IntelliJ IDEA 玩转 Git 分支与版本管理

文章目录 一、使用 IDEA 配置和操作 Git1.1 查看 Idea 中的 Git 配置1.2 克隆 Github 项目到本地 二、版本管理2.1 提交并推送修改2.2 拉取远程仓库2.3 查看历史2.4 版本回退 三、分支管理3.1 新建分支3.2 切换分支3.2 合并分支3.4 Cherry-Pick 参考资料 一、使用 IDEA 配置和操…