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

文章目录

  • yum
  • vim
  • gcc

本篇主要总结的是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++的用法是一样的

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

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

相关文章

点云从入门到精通技术详解100篇-从全局到局部的三维点云细节差异分析

目录 前言 国内外研究现状 细节差异分析相关研究 三维点云的相似性相关研究 存在的问题 三维点云对比的相关技术 2.1 三维点云的采集设备 2.2三维点云的存储格式 2.3三维点云的空间变换 2.4三维点云相似度分析 2.4.1点云特征的提取 2.4.2特征相似度计算 本文篇幅较长&#xff0…

获取Windows 10中的照片(旧版)下载

Windows 10中的新版照片应用,目前发现无法直接打开部分iOS设备上存储的照片。需要使用照片(旧版)才行。 但目前应用商店中无法直接搜索到照片(旧版),因此笔者提供如下链接,可以直接访问并呼出W…

PostgreSQL数据库IPC——SI Message Queue

SI Message Queue代码位于src/backend/storage/ipc/sinvaladt.c和src/backend/storage/ipc/sinval.c文件中,属于PostgreSQL数据库IPC进程间通信的一种方式【之前介绍过PostgreSQL数据库PMsignal——后端进程\Postmaster信号通信也是作为PostgreSQL数据库IPC进程间通…

Ubuntu安装Android Studio

一、Android Studio安装 官方教程:安装 Android Studio | Android Developers 1、下载:Download Android Studio & App Tools - Android Developers,选择linux版本 2、 提取/解压 将下载的安装包提取出来 3、 64位ubuntu系统&#…

vite+react 使用 react-activation 实现缓存页面

对应的版本 "react": "^18.2.0", "react-activation": "^0.12.4", "react-dom": "^18.2.0", "react-router-dom": "^6.15.0",react-activation 这是一个npm包,在react keep alive…

uniapp H5 navigateBack无法返回上一层级

项目场景: 提交表单后需要返回上一级 原因分析: H5在PC端打开,当前页面重新加载的情况下,出现navigateBack不能返回,由于H5端页面刷新后返回页面栈会消失 //提交 const handleSubmit async () > {form.value?.a…

k8s集群换ip

1.把/etc/kubernetes/*.conf中所有的旧ip换成新ip cd /etc/kubernetes/ find . -type f | xargs sed -i "s/$oldip/$newip/"2.替换$HOME/.kube/config文件中的旧ip为新ip(注意sudo的话需要改root下的) cd $HOME/.kube/ find . -type f | xargs sed -i "s/$old…

想要精通算法和SQL的成长之路 - 受限条件下可到达节点的数目

想要精通算法和SQL的成长之路 - 受限条件下可到达节点的数目 前言一. 相交链表(邻接图和DFS) 前言 想要精通算法和SQL的成长之路 - 系列导航 一. 相交链表(邻接图和DFS) 原题链接 public int reachableNodes(int n, int[][] ed…

《算法竞赛·快冲300题》每日一题:“点灯游戏”

《算法竞赛快冲300题》将于2024年出版,是《算法竞赛》的辅助练习册。 所有题目放在自建的OJ New Online Judge。 用C/C、Java、Python三种语言给出代码,以中低档题为主,适合入门、进阶。 文章目录 题目描述题解C代码Java代码Python代码 “ 点…

【精品】商品规格 数据库表 设计

特点 同一类商品的规格项分组一样同一类商品的规格项一样不同商品的规格值是不同的 规格参数规格组规格项:规格值本博客对应的SQL文件下载地址:https://download.csdn.net/download/lianghecai52171314/88306884 方案一 数据库设计 查询17号商品的规…

flex布局实现 内容区域高度自适应

如果可以实现记得点赞分享&#xff0c;谢谢老铁&#xff5e; 一、背景说明 对于纵向排列布局&#xff0c;且上中下个个模块都是自动高度。当我们针对中间部分需要自适应高度且进行滚动时&#xff0c;那我们就可以用flex: 1 来处理。 二 、先看效果图 二 、flex布局 <!DO…

【C++】day3学习成果:类

1.自行封装一个栈的类&#xff0c;包含私有成员属性&#xff1a;栈的数组、记录栈顶的变量 成员函数完成&#xff1a;构造函数、析构函数、拷贝构造函数、入栈、出栈、清空栈、判空、判满、获取栈顶元素、求栈的大小 头文件stack.h: #ifndef STACK_H #define STACK_H#include …

蓝蓝设计提供大屏信息软件UI设计服务

北京蓝蓝设计公司是一支由清华美院毕业的专业团队组成的设计公司。我们的设计师们在大屏科研信息软件UI设计领域拥有多年的工作经验和丰富的行业知识。我们对设计充满热爱&#xff0c;设计不仅是我们的专业和职业&#xff0c;更是我们的爱好。我们致力于为客户提供高质量、专业…

安装配置 zookeeper(单机版)

目录 一 准备并解压安装包 二 修改zoo.cfg文件 三 创建相应两个目录 四 创建文件myid 五 修改环境变量 六 启动 zookeeper 一 准备并解压安装包 这里提供了网盘资源 http://链接: https://pan.baidu.com/s/1BybwSQ_tQUL23OI6AWxwFw?pwdd4cf 提取码: d4cf 这里的安装包是…

线性代数的本质(五)——矩阵的运算

文章目录 矩阵的运算矩阵的转置方阵的运算初等矩阵分块矩阵逆矩阵矩阵的秩广义逆矩阵 矩阵的运算 矩阵的转置 转置&#xff1a;矩阵 A A A的行列互换得到的矩阵称为 A A A 的转置(transpose)&#xff0c;记作 A T A^T AT。 性质&#xff1a;矩阵转置运算满足下列性质&…

Mac 安装ZooKeeper+kafka基本使用

为什么 Kafka 依赖 ZooKeeper? 下面ZooKeeper基本介绍&#xff1a; 1、基本功能 ZooKeeper 为分布式系统提供了一种配置管理的服务&#xff1a;集中管理配置&#xff0c;即将全局配置信息保存在 ZooKeeper 服务中&#xff0c;方便进行修改和管理&#xff0c;省去了手动拷贝…

Django05_反向解析

Django05_反向解析 5.1 反向解析概述 随着功能的不断扩展&#xff0c;路由层的 url 发生变化&#xff0c;就需要去更改对应的视图层和模板层的 url&#xff0c;非常麻烦&#xff0c;不便维护。这个时候我们可以通过反向解析&#xff0c;将 url解析成对应的 试图函数 通过 path…

Python语言

这里写自定义目录标题 一、首先认识python一、python起源二、python的优缺点 二、python应用场景三、解释型语言与编译型语言四、安装python-3.5.4-amd64五、变量名的要求六、python简单的语句验证一、打开python交互式运行环境idle&#xff0c;在屏幕上打印python的第一个程序…

移动测试之语音识别功能如何测试?

移动测试之语音识别功能如何测试&#xff1f; 要知道语音识别功能如何测试&#xff0c;我们先了解智能产品语音交互流程&#xff1a; 所以&#xff0c;要进行测试的话&#xff0c;我们需要从以下几个维度来准备测试点&#xff1a; 基础功能测试&#xff1a; 1、声纹的录入&…

AWS Athena SQL基础知识

一、Athena SQL 基础学习🍜 1 获取一年的第几周 select Extract(week from date2022-12-11) as week_number Extract(week(Sunday) from date) as week_number2 Int to Date select date_parse(concat