【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,一经查实,立即删除!

相关文章

【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参数就不说了,应该不是这个问题,也就快一点。 首先找到自己的电脑名称(用命令行也行,只要能找到自己电脑名称就行,这里直接在共享里看)。 复制…

微信小程序Webview与H5通信

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

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

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

数据结构 (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接…

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):与传统神经网络的区别与…

【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 配置和操…

shell编程(4)脚本与用户交互以及if条件判断

声明: 学习视频来自B站up主 泷羽sec 有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团队无关&#…

架构-微服务-服务调用Dubbo

文章目录 前言一、Dubbo介绍1. 什么是Dubbo 二、实现1. 提供统一业务api2. 提供服务提供者3. 提供服务消费者 前言 服务调用方案--Dubbo‌ 基于 Java 的高性能 RPC分布式服务框架,致力于提供高性能和透明化的 RPC远程服务调用方案,以及SOA服务治理方案。…

【Python网络爬虫笔记】2-HTTP协议中网络爬虫需要的请求头和响应头内容

1 HTTP 协议整理 HTTP(Hyper Text Transfer Protocol)即超文本传输协议,是用于从万维网(WWW)服务器传输超文本到本地浏览器的传送协议,直白点儿,就是浏览器和服务器之间的数据交互就是通过 HTT…

TYUT设计模式大题

对比简单工厂,工厂方法,抽象工厂模式 比较安全组合模式和透明组合模式 安全组合模式容器节点有管理子部件的方法,而叶子节点没有,防止在用户在叶子节点上调用不适当的方法,保证了的安全性,防止叶子节点暴露…

SpringBoot集成Kafka和avro和Schema注册表

Schema注册表 为了提升kafka的性能,减少网络传输和存储的数据大小,可以把数据的schema部分单独存储到外部的schema注册表中,整体架构如下图所示: 1)把所有数据需要用到的 schema 保存在注册表里,然后在记…

Wireshark 4.4.2:安全更新、错误修复、更新协议支持

流行的网络协议分析器Wireshark已更新至4.4.2版本。它可用于网络故障排除、分析、开发和教育。 已修复以下漏洞: wnpa-sec-2024-14 FiveCo RAP 解剖器无限循环。wnpa-sec-2024-15 ECMP 解析器崩溃。 更新的协议支持: ARTNET、ASN.1 PER、BACapp、B…

《Django 5 By Example》阅读笔记:p339-p358

《Django 5 By Example》学习第12天,p339-p358总结,总计20页。 一、技术总结 1.项目(购物网站) django-admin startproject myshop 虽然这里只是示例,但我觉得这种命名为 myxxx 的习惯非常不好,因为在实际应用中,是…