Linux:基础开发工具之yum,vim,gcc的使用

2023-09-12 14:52:41

文章目录

本篇主要总结的是Linux下开发工具

  1. yum
  2. vim
  3. gcc/g++

yum

什么是yum?

不管是在手机移动端还是pc端,不管是什么操作系统,当用户想要下载一些内容或者工具的时候,都需要到一个特定的位置进行下载,例如在手机上,要下载一些应用的时候就可以去对应的应用商店下载

而在Linux系统中也有这样的概念,在Linux系统下也有需要下载的需求,那通常来说下载的方式主要有下面的几种:

  1. 下载一个程序的源代码,进行编译后得到可执行程序进行使用
  2. rpm包进行安装,安装实际上就是把可执行程序拷贝到指定的路径下
  3. yum一键式安装

通常来说,如果采用前两种方法进行的安装是很繁琐的,因此Linux中有这样一种比较方便的安装工具就是yum,如果类比到移动端,yum扮演的角色就是应用商店

yum是如何工作的?

在看这个问题前,首先要类比应用商店:应用商店中的app在没有被我安装到手机上的时候,这些app在哪里?答案是在服务器端

各个公司完成的软件,经过应用商店的审核后,把这些内容放到服务器端上,当用户需要某个软件的时候,就通过这个服务器端,就可以找到对应的软件安装包进行安装,这当中服务器端起到了一个审核的作用,以保证用户下载到的都是绿色健康的软件,可以用下图来表示这个过程:

在这里插入图片描述

Linux中的下载和上面的模式是一样的,yum的相关文件中,有一些文件保存的就是要去哪里下载文件

yum的使用方法

知晓了yum的原理,yum的使用就如同手机上的应用商店的相关内容一样,大概包括查找,安装和卸载:

查找内容:

yum list | grep 'xxx'

安装内容:

yum install xxxx
yum install -y xxxx  # 可以加入-y后缀直接安装

卸载内容

yum remove xxxx
yum remove -y xxxx  # 可以加入-y后缀直接卸载

和应用商店也有所不同,yum除了可以下载官方提供的下载源外,还可以有一些扩展软件源,例如epel等:

在这里插入图片描述

yum源更新

yum clean all
yum makecache

vim

vim简单来说,就是一个多模式的编辑器,核心工作就是对文本进行增删查改

使用方法:

vim test.c  # 使用vim打开一个文件进行文本编辑

就可以打开test.c这个文件进行文件内容的编辑

vim的一些基本指令

// 显示行号
set nu

// 保存
:+w

// 退出
:+q

定位功能的指令

以下指令均为在命令模式下可以进行:

gg    # 定位到第一行
n+G   # 定位到代码的任意一行|最后一行
^     # 特定一行的开始
$     # 特定一行的结尾
h     # 文本向左移动
j     # 文本向下移动
k     # 文本向上移动
l     # 文本向右移动
w     # 以单词为单位向后移动
b     # 以单词为单位向前移动
n+yy  # 复制当前行
n+dd  # 剪切第n行内容
n+p   # 粘贴
u     # 撤销
Ctrl+r# 向后撤销
~     # 文本大小写相互转换
n+r   # 替换光标所在字符|n个字符
n+x   # 向后删除一个字符|n个字符
n+X   # 向前删除一个字符|n个字符
#     # 查找同名单次

下面引入第四种模式—视图模式

进入视图模式:Ctrl+v
回到命令模式:Esc

vim模式下的注释

# 批量化注释
Ctrl+v+j/k进行选区+shift+i+esc

# 批量化删除注释
Ctrl+v+hjkl选中区域+d

vim的基本配置方法

  • 基础配置—初步理解vim配置的原理
    vim在启动的时候,会自动扫描当前用户下的家目录下的.vimrc,让内部的.vimrc内部的选项生效
  • vim配置的核心,实际上就是在这个.vimrc中添加更多的配置选项即可

vim的自动化部署问题

提权问题:如何把用户从普通用户提权提到root权限?

在这里插入图片描述
当我们作为普通用户要提权,使用root权限的时候,会被受阻,提示我们没有合适的权限,上面就是提示的样例,这是因为此时我们的test用户并没有成为root的受信任列表内,那么就需要把test这个用户加入到受信任列表内,这样就可以使用root用户的权限,而不是一次次的切换用户

解决方法:

首先切换到root用户下,访问etc路径下的``````sudoers```

接着打开这个文件,在受信任名单内添加我们需要的用户

在这里插入图片描述
这样就完成了受信任名单的添加,此时就可以直接使用sudo进行提权了:

在这里插入图片描述

gcc

gcc是一款编译器,可以将一份c语言程序编译为可执行文件,运行这个可执行文件就可以输出对应的内容,那么在进行编译的这个过程会发生什么?

将程序翻译的过程,大致上是可以分为下面的几个部分:预处理,编译,汇编,链接

  1. 预处理:主要包括,头文件展开,去注释,条件编译,宏替换
  2. 编译:主要是将c语言程序转换为汇编语言
  3. 汇编:主要是将汇编文件转换为可重定位的二进制文件
  4. 链接:形成可执行文件

gcc是一个编译器,如果不带任何选项,默认直接将程序编译为可执行文件,如果带上一些选项可以编译为这当中的一些部分,用下面的例子来举例:

在这里插入图片描述
vim编辑器下完成了下面的代码,其中包含了宏,用带选项的gcc进行编译如下:

在这里插入图片描述

使用带-E的选项进行编译,可以形成一个经过预处理后的文件,这个文件依旧是c语言文件,只是进行了一些初步的替换和头文件展开等操作

在这里插入图片描述
在这里插入图片描述
此时就形成了test.s,这个文件是进行的编译的工作,编译工作做完就停止了

在这里插入图片描述
此时就形成了汇编文件,文件内的内容是汇编指令

下一步是形成二进制文件:

在这里插入图片描述
就将汇编指令转换为了人看不懂的二进制文件

在这里插入图片描述
最后一步就是形成可执行文件:

在这里插入图片描述
这样就形成了可执行程序:

在这里插入图片描述

gccg++的用法是一样的

更多推荐

Go的并发的退出

有时候我们需要通知goroutine停止它正在干的事情,比如一个正在执行计算的web服务,然而它的客户端已经断开了和服务端的连接。Go语言并没有提供在一个goroutine中终止另一个goroutine的方法,由于这样会导致goroutine之间的共享变量落在未定义的状态上。在8.7节中的rocketlaunch程序中

什么是区块链,解释区块链的原理和应用场景

1、什么是区块链,解释区块链的原理和应用场景。区块链是一种分布式数据库,它由一系列按照时间顺序排列的数据块组成,并采用密码学方式保证不可篡改和不可伪造。区块链技术最初起源于比特币,作为比特币的底层技术,用于去中心化和去信任地维护一个可靠的数据库。相比于传统的网络,区块链具有数据难以篡改和去中心化的两大核心特点,使得区块

【数据库入门到精通】mysql的存储过程实战

前言🏠个人主页:我是沐风晓月🧑个人简介:大家好,我是沐风晓月,双一流院校计算机专业,阿里云社区专家博主😉😉💕座右铭:先努力成长自己,再帮助更多的人,一起加油进步🍺🍺🍺💕欢迎大家:这里是CSDN,我总结知识的地方,喜欢的话请三连,有问题请私信😘可以关注我的云原生社区:云原生社区也可以关注我的英语社区:

Input子系统 - Kernel驱动程序 - Android

Input子系统-Kernel驱动程序-Android1、Input子系统相关定义1.1代码位置1.2input_dev结构体:表示输入设备1.3input_handler结构体:structinput_handler-implementsoneofinterfacesforinputdevices1.4input_h

elasticsearch基础篇

目录1.mysql与elasticsearch2.索引库操作2.1.mapping映射属性2.2.索引库的CRUD2.2.1.创建索引库和映射2.2.2.查询索引库2.2.3.修改索引库2.2.4.删除索引库2.2.5.总结3.文档操作3.1.新增文档3.2.查询文档3.3.删除文档3.4.修改文档3.4.1.全量修改

《C++API设计》读书笔记(3):模式

本章内容本章涵盖了一些与C++API设计相关的设计模式和惯用法。“设计模式(DesignPattern)”表示软件设计问题的一些通用解决方案。该术语来源于《设计模式:可复用面向对象软件的基础》(DesignPatterns:ElementsofReusableObject-OrientedSoftware)本书不会涵盖

使用Python进行健身手表数据分析

健身手表(FitnessWatch)数据分析涉及分析健身可穿戴设备或智能手表收集的数据,以深入了解用户的健康和活动模式。这些设备可以跟踪所走的步数、消耗的能量、步行速度等指标。本文将带您完成使用Python进行FitnessWatch数据分析的任务。FitnessWatch数据分析是健康和保健领域企业的重要工具。通过分

C 语言网络编程 — NAT 网关运行原理

目录文章目录目录NATNATGW实现原理NAT技术的类型NAT技术的基本原理NAT技术的连接跟踪功能NAPT技术的基本原理NAPT技术的连接跟踪功能NATServerNAT穿透LinuxiptablesNATSNATDNATNAPTNATNAT(NetworkAddressTranslation,网络地址转换)是一种L

基于Java+SpringBoot+vue前后端分离小徐影城管理系统设计实现

博主介绍:✌全网粉丝30W+,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌🍅文末获取源码联系🍅👇🏻精彩专栏推荐订阅👇🏻不然下次找不到哟2022-2024年最全的计算机软件毕业设计选题

Java笔记:Java虚拟机的指令

1.字节码指令集1.1概述Java虚拟机的指令由一个字节长度的、代表着某种特定操作含义的数字(称为操作码,Opcode)以及跟随其后的零至多个代表此操作所需参数(称为操作数,Operands)而构成。比如:字节码助记符指令含义0x00nop什么都不做0x01aconst_null将null推送至栈顶0x02iconst

深度思考计算机网络面经之三

计算机网络.1说说你对tcp滑动窗口的理解TCP滑动窗口是TCP协议流量控制的一个重要机制。它的主要目的是确保发送方不会因为发送太多数据而使接收方不堪重负。下面我会详细地描述滑动窗口的概念:窗口的大小:滑动窗口的大小(以字节为单位)表示发送方在等待确认之前可以发送的最大数据量。该大小可以是固定的,但在现代的TCP实现中

热文推荐