目录
一、什么是编辑器、编译器?
1.1、编辑器下载
1.2、编译器下载
二、常用的三种编辑器
2.1、vi编辑器
2.2、vi编辑器的三种工作模式
2.2.1、命令行模式
2.2.2、输入模式
2.2.3、末行模式
2.3、光标操作命令
2.4、屏幕操作命令
2.5、文本修改命令
2.6、其他命令
2.6.1、块选择按键
2.6.2、多文件编辑
2.6.3、多窗口功能
2.7、nano编辑器
2.8、gedit编辑器
三、gcc编译器
3.1、编译器使用
3.1.1、gcc编译流程
3.1.2、gcc编译器的参数说明
3.2、gdb调试器
3.2.1、gdb功能介绍(含命令参数)
四、使用编辑器与编译器的要点
编辑器是:所有计算机系统中常用的一种工具,用户在使用计算机时,需要自己建立文件,编写程序,这些工作都需要使用到编辑器。
编译器是:能将一种编程语言(通常是高级语言),翻译为另一种语言(通常为低级语言,计算机能识别的语言);
在命令行输入:sudo apt-get install vi 或者 sudo apt-get install vim(vim是vi的升级版本)
如何测试是否下载完成:直接使用编辑器编辑文件就知道了,例如在命令行输入:vi 文件名,vim 文件名
在命令行输入:sudo apt-get install gcc 等待下载完成即可;
如何测试是否下载完成:直接使用编译器编译文件就知道了,例如在命令行输入:gcc 文件名
简介:vi是visual interface的简称,是Linux中最常用的编辑器;
用法:vi [文件名]
说明:如果不指定文件名,则新建一个未命名的文件
启动vi的常用方法:
vi filename,作用:打开或新建文件,并将光标置于第一行首
vi +n filename,作用:打开文件,并将光标置于第n行首
vi + filename,作用:打开文件,并将光标置于最后一行首
vi + /str filename,作用:打开文件,并将光标置于第一个与str相匹配的字符串处
vi -r filename,作用:在上次使用vi编辑器时系统崩溃,回复filename
vi filename(第一个文件) -filename(第n个文件),作用:打开多个文件,依次编辑
(vi 文件名)当进入vi时,处于命令模式。该模式下,用户可通过vi的命令对文件的内容进行处理,比如删除、移动、复制等;用户可以输入各种合法的vi命令,管理文档,从键盘输入的任何字符都被当做编辑命令,如果输入的字符是合法的vi命令,则vi接受用户命令并完成相应的动作。
命令模式-->文本输入模式,如果要用其他的文本输入命令,要先退出文本输入模式,返回到命令模式,在输入命令。
在输入模式下,可以在光标处输入内容,或通过鼠标移动光标,也可以通过Esc键返回命令模式;
命令行模式进入输入模式的按键如下:
i,作用:从目前光标所在处插人
I,作用:从目前所在行的第一个非空格字符处开始插入
a,作用:从目前光标所在的下一个字符处开始插入
A,作用:从光标所在行的最后一个字符处开始插入
o,作用:从目前光标所在行的下一行处插人新的一行
O,作用:从目前光标所在处的上一行插人新的一行
r,作用:替换光标所在的那一个字符一次
R,作用:替换光标所在处的文字,直到按下Esc 键为止
该模式下按“:”键进入末行模式,提示符为“:”,末行命令执行后,vi自动回到命令模式。
在末行输入的过程中,若要退出该模式,可按下退格键将输入的命令全部删除,在按一下退格键,即可回到命令模式;
可用按键及含义:
:w,作用:将编辑的数据保存到文件中
:w!,作用:若文件属性为“只读”时,强制写人该文件
:q,作用:退出vi
:q!,作用:强制退出不保存文件
:wq,作用:保存后退出vi
:w filename,作用:将编辑的数据保存成另一个文件
/word,作用:向下寻找一个名称为word的字符串
? word,作用:向上寻找一个名称为word的字符串
n,作用:n为按键,代表重复前一个查找的操作
N,作用:N为按键,与n相反,为“反向”进行前一个查找操作
:n1,n2s/word1/word2/g,作用:在第n1与n2行之间寻找wordl字符串,并替换为word2
:n1,$s/word1/word2/g,作用:全文查找wordl字符串,并将它替换为word2
命令行模式下,移动光标的方法如下
h或向左箭头键,作用:光标向左移动一个字符
j或向下箭头键,作用:光标向下移动一个字符
k或向上箭头键,作用:光标向上移动一个字符
1或向右箭头键,作用:光标向右移动一个字符
+,作用:光标移动到非空格符的下一行
-,作用:光标移动到非空格符的上一行
n< space>,作用:按下数字n后再按空格键,光标会向右移n个字符
0或功能键Home,作用:移动到这一行的行首
$或功能键End,作用:移动到这一行的行尾
H,作用:光标移动到屏幕的第一行的第一个字符
M,作用:光标移动到屏幕的中央的那一行的第一个字符
L,作用:光标移动到屏幕的最后一行的第一个字符
G,作用:光标移动到这个文件的最后行
nG,作用:n为数字。移动到这个文件的第n行
gg,作用:移动到这个文件的第一行,相当于1G
n[Enter],作用:n为数字。光标向下移动n行
在命令行模式和输入模式下都可以使用屏幕滚动命令,以屏幕为单位的光标操作,常用于滚屏和分页的按键如下:
[Ctrl]+f,作用:屏幕向下移动一页,相当于Page Down按键
[Ctr]+b,作用:屏幕向上移动一页,相当于Page Up按键
[CtrI]+d,作用:屏幕向下移动半页
[Ctrl]+u,作用:屏幕向上移动半页
x,作用:删除光标所在位置上的字符
dd,作用:删除光标所在行
n+x,作用:向后删除n个字符,包含光标所在位置
n+dd,作用:向下删除n行内容,包含光标所在行
yy,作用:将光标所在行复制
n+yy,作用:将从光标所在行起向下的n行复制
n+yw,作用:将从光标所在位置起向后的n个字符串(单词)复制
p,作用:将复制(或最近一次删除)的字符串(或行)粘贴在当前光标所在位置
u,作用:撤销上一步操作
.,作用:重复上一步操作
v, 作用:字符选择,将光标经过的地方反白选择
V, 作用:行选择,将光标经过的地方反白选择
[Ctrl]+v, 作用:块选择,可以用长方形的方式选择数据
:n,作用:编辑下一个文件
:N,作用:编辑上一个文件
:files,作用:列出目前这个vim打开的所有文件
,作用:打开一个新窗口,如filename,表示在新窗口新打开一个新文件,否则表示两个窗口
为一个文件内容
[Cr]+w+j,作用:先按下Ctrl键不放,再按下w键后放开所有的按键,然后再按下j键,则光标可移动
到下方的窗口
[Ctrl]+w+ k,作用:同上,不过光标移动到上面的窗口
[CtrI]+ w+q,作用:结束离开当前窗口
打开方式:在终端输入nano (无需下载)
显示结果如下图1所示:
指令提示如上图;
打开方式1:在终端输入gedit(无需下载)
打开方式2:在DASH中输入gedit,搜索出gedit的图标,点击图标即可打开gedit编辑器
方式1如下图2:
图2
因为vi编辑器比较常用,这两种编辑器就不介绍了。
预编译、编译、汇编(生成目标文件)、连接(生成可执行的文件);
预编译(预处理):
主要处理C语言源文件中的#ifdef、#include,以及#define等命令,gcc编译器会忽略掉不需要预处理的输入文件,该阶段会生成中间文件*.i;
编译阶段:
输入的文件是*.i文件,编译后生成的是汇报文件*.s;(例如编译test.i文件,生成的文件就是test.s文件)
汇编阶段:
将输入的 汇编语言文件转换为目标代码,可以使用-c选项完成;
连接阶段:
将生成的目标文件与其他目标文件连接成可执行的二进制代码文件;
完整执行一个文件:
完整的将一个文件(test.c)一次性完成预处理、编译、汇编、连接、编译成可执行的文件
(test),执行test文件,需要加上参数-E、-S、-c,如果未使用该选项,则自动生成a.out可执行文件;
示例1:预编译test.c程序,将预编译结果输出到test.i
vim打开文件,vim 文件名(我这里是语句是vim test.c,先编辑出内容)
输入完成后,输入“:”号,进入末行模式,输入wq(完整的应该是:wq),作用是退出并保存该文件,按下回车;
预编译test.c程序,将预编译结果输出到test.i
查看test.i文件的内容(只从后面截了一部分,预编译内容较多):
示例2:使用vim编辑器创建一个文件hello_word.c,gcc编译该文件(hello_word.c),并输出hello world
注意点:当我们把全部内容输入完成时,按下Esc键结束,然后按下“:”切换模式,退出并保存;
把hello_word.c文件编译,并把结果输出到print_helloword文件
显示输出内容,执行当前工作路径下的可执行文件(是我们刚刚生成的文件);
总体参数选项如下:
-c,作用:编译或汇编源文件,但不进行连接
-S,作用:编译后即停止,不进行汇编及连接
-E,作用:预处理后即停止,不进行编译、汇编及连接
-g,作用:在可执行文件中包含调试信息
-o file,作用:指定输出文件file
-v,作用:显示Gcc的版本
-I dir,作用:在头文件的搜索路径列表中添加dir目录
-L dir,作用:在库文件的搜索路径列表中添加dir目录
-static,作用:强制使用静态连接库
-i library,作用:链接名为library的库文件
优化选项参数如下:
-O0,作用:不进行优化处理
-O1,作用:基本的优化,使程序执行得更快
-O2,作用:完成-O1级别的优化外,还要一些额外的调整工作,如处理器指令调度
-O3,作用:开启所有优化选项
-Os,作用:生成最小的可执行文件,主要用于嵌人式领域
警告和出错参数选项:
- ansi,作用:支持符合ANSI标准的C程序
-pedantic,作用:允许发出ANSI C标准所在列的全部警告信息
一W,作用:关闭所有警告
-Wall,作用:允许发出Gcc提供的所有有用的警告信息
一werror,作用:把所有的警告信息转换成错误信息,并在警告发生时终止编译
监视或修改程序中变量的值;设置断点,以使程序在指定的代码行上暂停运行;单步执行或程序跟踪;
gdb常用调试命令:
break,作用:在代码里设置断点
c,作用:继续break后的执行
bt,作用:反向跟踪,显示程序堆栈
file,作用:装入想要调试的可执行文件
kill,作用:终止正在调试的程序
list,作用:列出产生执行文件的源代码的一部分
next,作用:执行一行源代码,但不进人函数内部
step,作用:执行一行源代码且进人函数内部
run,作用:执行当前被调试的程序
quit,作用:退出gdb
watch,作用:监视一个变量的值,而不管它何时改变
set,作用:设置变量的值
shell,作用:在gdb内执行Shell 命令
print,作用:显示变量或表达式的值
quit,作用:终止gdb调试
make,作用:不退出gdb的情况下,正新产生可执行文件
where,作用:显示程序当前的调用栈
调试示例:暂无,调试部分较为繁杂,要多练练;
4.1、编辑器三种工作模式的切换需要熟练掌握,多使用即可熟悉;
4.2、编译器的编译过程需要了解;
4.3、gcc 编译器不带参数时,会直接把编译文件的过程一步到位-->直接生成可执行文件在当前工作目录下,名称为a.out(如果没有使用-o参数指定文件名);