赞
踩
目录
本篇主要介绍的是Linux下几种常用的软件的使用
关于Linux下软件的安装,yum源的配置请点击:
vim,使用熟练后可以说是最厉害的文本编辑器(之一?)
vim的整体学习够一个新的篇章了,这里仅做简单介绍
vim的四种模式
- normal普通模式
任何模式下按Esc(多按几次都会回到普通模式)
- 普通模式下进行各种命令操作和移动
大部分情况下是浏览而不是编辑- insert插入(编辑)模式
普通模式下键盘键入
- i表示insert从当前位置编辑
- I即insert before line表示从当前行首进行编辑
- a表示append从当前光标后(追加)进行编辑
- A即append after line表示从当前行末进行追加编辑
- o表示open a line below往下新启一行开始编辑
- O即append a line above表示往上一行新启一行开始编辑
- :cmd 命令模式(普通模式下输入:即可)
:set nu设置行号
:vs(vertical split)竖分屏
:sp(split)横分屏
:!命令(不退出vim执行命令)- 可视化模式
普通模式下按v(visual)即可进入
- visual可视化模式一般用来块状选择文本(批量选则)
- 进入后按V(大v)可选择行
- ctrl + v可以进行块状选择(进入了visualblock模式)
vim的基础常用命令
- :w保存文件但不退出vi
- :w file将修改另外保存到file中,不退出vi
- :w!强制保存,不推出vi
- :wq保存文件并退出vi
- :wq!强制保存文件,并退出vi
- q:不保存文件,退出vi
- :q!不保存文件,强制退出vi
- :e!放弃所有修改,从上次保存文件开始再编辑
这个工具即是Linux下常用的C语言/C++的编译器,只负责代码的编译
在Linux下使用该编译器可以采用分布处理,一步步编译
源程序--->可执行程序的过程被称作翻译(编译)
编译器翻译过程:-E,-S,-c (编译过程ESc ---> 对应的临时文件的后缀 .i .s .o)
text.i, text.s, text.o, a.out(可执行程序)
-o选项主要就是起到了“重定向”的作用,将输出内容输入到某个对应文件里
gcc/g++在编译程序时,默认采用的是动态联编的方式,生成release版本的可执行程序
make是一条命令 --- makefile是一个文件
make是一个命令工具,是一个解释makefile中指令的命令工具
makefile可以理解成脚本,其默认是从上往下执行,默认只会形成一个可执行程序,即第一个扫描到的可执行程序,若要跳过第一个可执行程序,则需要带上其可执行程序名字
makefile带来的好处 --- > “自动化编译”,只需要一个make命令,整个工程完全自动编译
makefile第一行写依赖关系(要顶行),第二行写依赖方法(以tab开头)
ps:顶行和tab键开头是属于语法硬性要求,不可改变(即使是四个空格也不行)
mybin:main.c text.c #表明依赖关系
@gcc main.c text.c -o mybin #实现依赖关系的方法
(加@符号则表示该命令执行但不回显,不加@则会回显命令)
.PHONY:命令名称
可以理解成makefile的:“关键字”,被其修饰的命令即具有一个特征:总是被执行的
即总是会根据依赖关系无障碍运行伪目标也是目标,与mybin一样同为目标
使用.PHONY修饰后,该命令即默认总是被执行的,不会因为其它因素而不执行
如:
.PHONY:clean
clean:
@rm -f filename
为什么make只能执行一次,第二次则不被执行?
(当文件未进行修改时,且命令未被.PHONY修饰)
因为编译需要时间成本(大型程序需要很长时间),所以Linux限制了重复执行生成同一个程序
makefile如何识别文件是否为最新状态?
通过比对源文件与可执行程序的修改时间来判断可执行程序是否为最新状态
所以当可执行程序未被清理时,重新对源文件进行编译,则可能并未生成最新的源文件对应的可执行程序
使用make/makefile的好处
- 只需要写依次makefile,保证makefile没有写错,则make即可直接正确编译程序
- 编写一次makefile,后续修改了源文件内容,直接清理再make即可,不需要重新对每个源文件依次编译
makefile编写时的一些快捷符号
如图所示:makefile中有些许符号可以批量指定目标,当源文件繁多可以使用其简化makefile
gdb是Linux下常用的一款调试代码的工具
但由于Linux下是命令行操作,使用gdb进行调试对新手来说也十分的不友好,需要多加练习
首先调试前我们要知道的有
- 程序的发布方式有两种,debug模式和release模式
前面我们知道了Linux下gcc/g++编译出来的二进制程序,默认是动态链接的release模式
- release一般是软件进行发布,并交付给用户的模式,不包含调试信息
- debug一般是开发时进行发布的,包含了调试信息
所以debug生成的程序在体积上一定是大于release的- 要使用gdb调试,必须在源代码生成二进制程序(.o文件)的时候, 加上 -g 选项[重要]
readelf 程序名 可查看程序的一个段信息
readelf -Sh 程序名 | grep 'debug'
查看程序的段信息里是否包含debug的信息(也就是调试信息)
简单介绍完后,我们一起来了解一下gdb下的常用命令吧
- gdb指令:gdb会记录最近一条命令,如果命令不变换可以直接按回车执行
- l(list):显示代码
如 l 5:显示第五行包括其前后的代码- b(breakpoint):打断点
如 b 5:在第五行打一个断点- info b:显示断点信息
- (gdb) b 13
输出:Breakpoint 1 at 0x400563:file main.c, line 13.
- (gdb) info b
输出:Num Type Disp Enb Address What
1 breakpoint keep y 0x0000000000400563 in main at main.c:13
- d(delete):删除断点
- d num:删除对应num号的断点
- (gdb) d 1
- (gdb) info b(删除不存在的断点)
No breakpoints orwatchpoints.
- r(run):运行代码到断点处
无断点直接运行会运行到程序结束
- c(continue):运行到下一个断点处
- n(next):逐过程运行代码
- s(step):逐语句执行代码
- display:常显示(添加监视项)
如 display 变量名 运行时显示变量结果- undisplay :删除监视项
如 undisplay 编号 删除对应的监视项- until:跳转至指定行
- r(repeat):程序未结束时跳转至第一个断点处重新开始调试
- finish:结束某个函数调用,直接出结果,然后停下
- bt:查看当前调用堆栈
- disable/enable 断点:使能(打开/关闭)断点(不删除断点,但禁用了该断点)
以上就是关于在Linux下的常用软件了,如果对你有帮助,请给个三连呀~点赞评论转发让更多人看到
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。