前言:哈喽小伙伴们,经过前边的学习我们已经掌握了Linux的基本指令和权限,相信大家学完这些之后都会对Linux有一个更加深入的认识,但是Linux的学习可以说是从现在才刚刚开始。
这篇文章,我们将讲解若干个Linux的开发工具,让我们能够开始使用Linux来做一些事情。
目录
一.yum
1.什么是yum
2.yum操作
(1)搜索
(2)安装
(3)运行
(4)卸载
二.vim
1.什么是vim
(1)命令模式
(2)插入模式
(3)底行模式
2.vim配置
三.gcc/g++
1.指令
2.翻译过程
四.make/makefile
五.gdb
1.什么是gdb
2.gdb操作
总结
相信现在没有年轻人不会从手机或者电脑上下载各种各样的APP软件,但是你们知道这些APP为什么能被下载到手机上吗???
除了能够直接从浏览器上下载安装包之外,每个手机和电脑上都会有原装应用商店,我们都是通过应用商店这个媒介,从应用厂商的服务器中将应用的安装包提取到自己的设备上在进行安装。
yum,就是这些应用商店,是一个软件下载安装管理的一个客户端。
我们可以通过yum,在Linux系统中安装一些东西。那具体的安装过程又是怎样的呢???
通过yum安装指令,按照要安装的东西去寻找对应的服务器。但是我们为什么能找到对应的应用厂商的服务器呢???
这是因为,我们的机器内部,内置了目标服务器的地址链接。
yum list | grep XXX
通过该指令,便可以搜索到所有携带XXX的软件,比如说我们搜索带有“sl”的软件:
等待一段时间之后就会给我们罗列出所有携带“sl”软件。
sudo yum (-y) install XXX
通过该指令就可以将对应的XXX软件进行安装。因为安装软件是在对应的root目录下进行的,所以要加上sudo,让我们的普通用户权限升级为root权限。比如说安装一个名为“sl.x86_64”的软件:
这里的“sl.x86_64”中,sl是软件名称,x86_64为软件的运行环境。
安装时会有一个确认,确认一下是否安装,如果不想确认,便可在指令中加上“-y”,强制安装。
调用指令后要输入对应的普通用户的密码,然后等待安装完成即可。
安装之后直接输入软件名字即可实现运行,这里我们运行一下“sl”:
能够看出此软件的功能就是在屏幕上驶过一辆火车。
sudo yum(-y)remove XXX
能够安装同样就能卸载,使用上述指令便可将XXX软件进行卸载。例如我们将“sl”进行卸载:
如图所以,如果指令不加“-y”,卸载时就会给出一个确认,是否要删除,如果不想确认,就可以加上“-y”,直接强制卸载。
学过这么多知识之后,我们终于可以开始在Linux上编写代码啦,而Linux系统中,供我们编写代码的工具即为vim。
vim一Linux系统下的一款多模式的编辑器。那么何为多模式呢???
vim编辑器下一共分为三种模式:
命令模式:允许使用者通过命令来进行文本的编辑控制。
插入模式:编辑模式
底行模式:用来让vim进行包括但不限于shell之间的交互。
下面我们就通过讲解vim使用方法的同时,来介绍这三种模式。
vim的使用方法为:
vim XXX文件
通过vim+XXX文件指令,能够让我们对该文件进行编写,同时进入vim的编辑器窗口:
但是会发现我们进入该窗口之后,并不能立即写代码,并且按某些按键时不会有任何反应。
这是为什么呢???
实际上,刚进入vim编辑器时,我们就是处在命令模式之中,随后通过执行某些命令来实现编辑器对文本的各种操作。下面是常用的操作指令,均在光标所在处执行:
n + yy:复制当前n行
n + p:将复制内容粘贴n次
u:撤销,ctrl + u:恢复上一次撤销。
n + dd:剪切/删除指定n行
shift + 4:将光标定位到当前行的结尾。
shift + 6:将光标定位到当前行的开始。
gg:将光标定位到整个文本的最开头。
shift + g:将光标定位到整个文本的最后一行。
n + shift + g:将光标定位到文本的第n行。
h,j,k,i:分别能让光标进行左、下、上、右移动,也可带n,直接移动n次。
w:按照单词为单位进行光标后移。
b:按照单词为单位进行光标前移。
shift + ~:将指定字母进行大小写切换。
n + x:删除光标后续的n个字符。
n + shift + x:删除光标之前的n个字符。
n + r:对包括光标指定的字符及其后边的共n个字符进行替换。
shift + r:进入替换模式,可以对文本的任意字符进行替换。
shift + zz:保存并退出
批量化注释操作:
ctrl + v:通过方向键选中若干行;shift + i,进入插入模式;//,注释第一行;Esc,选中行全部注释
批量化去注释:
ctrl + v:通过方向键选中若干行;d,删除选中。
以上所有指令,不加n均代表只执行一次。
在命令模式下,按下键盘上的“i”键,就可以进入插入模式,也就是说可以进行编写操作了:
能够看出在插入模式下,窗口的左下角会有INSERT,也就是插入的英文。
编写完代码之后,想要退出插入模式,则需按下Esc键,便可从插入模式退出回命令模式。
除了i之外,a、o键同样可以进入插入模式,但是三者有所不同:
i:进入插入模式不会移动光标。
a:进入插入模式会将光标后移一位。
o:进入插入模式会直接另起一行。
当我们代码编写完之后,想要退出vim时,需要在命令模式的前提下,同时按下SHIFT+;/:两个键位,此时窗口的左下角便会有一个“:”,代表着进入了底行模式:
底行模式下,“w”键表示保存,“q”键表示退出,所以在编写之后想要退出vim,便可输入wq,随后回车,便可同时完成保存+退出。
退出之后来看我们的文件,内容确实存在。
在底行模式下也同样有若个常用指令:
w:保存
q:退出
!:强制
set nu:显示行号
set nonu:去除行号
/+关键字:搜索文本中指定的关键字
! + 指令:无需退出vim,可以进行shell命令的执行,常用函数查看
vs 文件名:分屏,多文件操作
ctrl + ww:不同文件之间的光标转移
虽然我们已经了解了怎么用vim编程,但是他并没有像其他编程软件一样能够简单快捷的补全代码,自动缩进之类的操作,这就需要我们自己来对vim进行配置。
首先,在自己的家目录下建立一个名为.vimrc的文件:
但是我们找不到vimrc文件 ,这是因为"."的作用是将vimrc文件隐藏:
随后我们用vim对.vimrc文件进行编写:
比如我们写上一个get nu显示行号的指令后保存退出。之后我们再在家目录下使用vim写文件时,就会自动显示行号。
还有其他有帮助的指令就需要靠大家自己去配置了。
gcc和g++是两种文件编辑器,能够执行我们所编写的代码。不同的是,gcc只能执行c语言代码,g++则既可以执行c语言代码,也可以执行c++代码。
我们以gcc为例来讲解这两种编辑器的具体使用:
如图,我们新建一个名为test.c的c语言文件,并编写一个循环代码后保存退出。
随后通过指令gcc + 文件名,对文件进行编译,同时默认生成一个名为a.out的可执行程序。
最后通过指令./+可执行程序名,便可执行程序。
同时我们也可以在编译文件时,通过指令 gcc + 文件名 + -o + 可执行程序名,来指定生成的可执行程序的名字:
一段程序的翻译过程并没有我们所认为的那么简单,它一共分为四个步骤:
- 预处理:宏替换,去注释,头文件展开,条件编译
- 编译:将C变成汇编语言
- 汇编:将汇编语言编译成为二进制目标文件
- 链接:形成可执行程序
我们也可以通过在指令中添加如下部分,将一段程序的运行过程停留在这四种阶段并展示结果:
-E:只激活预处理,但不会生成文件,需要自己把它重定向到一个输出文件中
-S:编译到汇编语言不进行汇编和链接
-c:编译到目标文件
-o:文件输出到文件
虽然我们已经认识和了解到了如何使用vim和gcc/g++来编写和运行文件,但是使用它们还是需要我们自己去一次一次的执行指令,总归还是没有像我们使用的VS等编译器方便。
而make和makefile的作用,就是将这些指令整合在一起,达到一次执行的目的。
首先我们要知道,make是一个命令,而makefile是一个文件,需要我们自己去创建和编写。
当我们执行make指令时,它会自动进入当前目录下的makefile文件中,并执行存在里边的指令。
如图,我们创建了makefile文件,并在里边编写如上代码。
调用make命令, 发现文件里的gcc -o mytest test.c 指令被执行,生成名为mytest的可执行程序。 这便是make/makefile的基本用法。
再来看makefile文件的内部:
前两行为一个整体,mytest为目标文件,冒号“:”表示依赖关系,test.c则为依赖文件(可以不止一个,用空格隔开)。
第二行称为依赖方法:初始使用tab键空位(不能是四个空格),随后是一段指令,连接目标文件和依赖文件。依赖方法可以不只是一个,可以多行调用多个指令,这些指令会按照从上到下的顺序一一执行,
下面我要再添加一个:
再去执行:
能够看出,当我们的指令和依赖文件无关时,依赖文件可以不写,只需要一个目标文件。
同时,当makefile文件中有多个目标文件时,如果只单独调用make,它默认只会执行第一个目标文件,执行其他目标文件则需要在make后加上目标文件名。
再来看:
当我们多次调用mytest目标文件时,因为第一次已经生成了可执行程序,所以之后的调用都会提示说mytest已经是最新的,无法重复调用。
但是如果非要重复调用也不是不行,但是需要增加一个东西:
.PHONY可以解除限制,使该目标文件能够多次调用:
虽然能多次调用,但并不会生成多个可执行程序,所以一般不推荐其使用于对文件的各种操作上。
此外,目标文件和依赖文件还可以用符号来代替:
其中“@”代表目标文件,“^”代表依赖文件(多个依赖文件可代替整体),$则起到替换的作用。
除此之外,我们还可以定义两个量来代替目标文件和依赖文件:
如图,我们定义bin作为目标文件,src作为依赖文件,随后对其赋值进行使用。
这就相当于是C语言中的宏,下边的指令不用变化,要改变时只用改变对bin和src的赋值即可。
我们发现,使用make来执行这些指令时,都会自动显示,那如果我们不想显示,该如何隐藏呢?
很简单,只需要在指令前加@即可:
通过上面四种工具的学习,我们已经能够实现在Linux上编辑代码,运行代码,但是还少了一个重要的东西,那就是调试代码。
而gdb就是Linux调试器。
我们知道,在我们的编译器上有debug和releae两个不同的版本类型。其中debug是程序员的开发和调试版本,专用于代码的编写和调试,而release则是最终授予用户使用的版本,其特点是代码已经经过测试,不含任何bug并且代码量和速度都达到最优。
在我们的Linux系统下,由gcc默认生成的可执行程序都是release版本,是不能进行调试的,所以我们需要使用指令 gcc -o xxx xxx -g来生成一个debug版本下的可执行程序进行调试:
现在有一个文件名为test.c,我们使用指令生成一个debug版本下的可执行程序:
gdb的使用方法为:gdb + 可执行程序名:
成功执行指令之后就会现在该段内容,随后我们就可以输入gdb下的各种指令来实现调试啦:
- quit:退出gdb
- list / l 行号:显示文件源代码,每次显示10行,回车可继续显示
- list / l 函数名:显示函数的源代码
- r / run:运行程序
- n / next:单条执行,逐过程
- s / step:进入函数调用,逐语句
- break / b 行号:在某行设置断点
- break / b 函数名:在某函数开头设置断点
- info / i break / b:查看断点信息
- d 断点编号:删除断点
- disable / enable:禁用(非删除)/开启断点
- finish / f:执行到当前函数返回,然后停下来等待指令
- printf / p 变量/变量地址:查看变量内容或变量地址
- display 变量/变量地址:跟踪查看变量值或变量地址,每次停下来都显示
- undisplay:取消变量跟踪
- until 行号:跳转到指定行,中间的代码会运行
关于Linux的基本操作工具到这里就分享完啦,希望能够对大家有所帮助。
喜欢博主文章的小伙伴记得一键三连哦,我们下期再见啦!