Linux(Ubuntu)操作系统,vi编辑器与gcc编译器的下载与使用(命令参数很详细)

目录

一、什么是编辑器、编译器?

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功能介绍(含命令参数)

四、使用编辑器与编译器的要点


一、什么是编辑器、编译器?

        编辑器是:所有计算机系统中常用的一种工具,用户在使用计算机时,需要自己建立文件,编写程序,这些工作都需要使用到编辑器。

        编译器是:能将一种编程语言(通常是高级语言),翻译为另一种语言(通常为低级语言,计算机能识别的语言);

1.1、编辑器下载

        在命令行输入:sudo apt-get install vi 或者 sudo apt-get install vim(vim是vi的升级版本)

        如何测试是否下载完成:直接使用编辑器编辑文件就知道了,例如在命令行输入:vi 文件名,vim 文件名

1.2、编译器下载

        在命令行输入:sudo apt-get install gcc     等待下载完成即可;

        如何测试是否下载完成:直接使用编译器编译文件就知道了,例如在命令行输入:gcc 文件名

二、常用的三种编辑器

2.1、vi编辑器

简介: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个文件),作用:打开多个文件,依次编辑

2.2、vi编辑器的三种工作模式

2.2.1、命令行模式

        (vi 文件名)当进入vi时,处于命令模式。该模式下,用户可通过vi的命令对文件的内容进行处理,比如删除、移动、复制等;用户可以输入各种合法的vi命令,管理文档,从键盘输入的任何字符都被当做编辑命令,如果输入的字符是合法的vi命令,则vi接受用户命令并完成相应的动作。

        命令模式-->文本输入模式,如果要用其他的文本输入命令,要先退出文本输入模式,返回到命令模式,在输入命令。

2.2.2、输入模式

        在输入模式下,可以在光标处输入内容,或通过鼠标移动光标,也可以通过Esc键返回命令模式;

命令行模式进入输入模式的按键如下:

i,作用:从目前光标所在处插人

I,作用:从目前所在行的第一个非空格字符处开始插入

a,作用:从目前光标所在的下一个字符处开始插入

A,作用:从光标所在行的最后一个字符处开始插入

o,作用:从目前光标所在行的下一行处插人新的一行

O,作用:从目前光标所在处的上一行插人新的一行

r,作用:替换光标所在的那一个字符一次

R,作用:替换光标所在处的文字,直到按下Esc 键为止

2.2.3、末行模式

        该模式下按“:”键进入末行模式,提示符为“:”,末行命令执行后,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

2.3、光标操作命令

命令行模式下,移动光标的方法如下

h或向左箭头键,作用:光标向左移动一个字符

j或向下箭头键,作用:光标向下移动一个字符

k或向上箭头键,作用:光标向上移动一个字符

1或向右箭头键,作用:光标向右移动一个字符

+,作用:光标移动到非空格符的下一行

-,作用:光标移动到非空格符的上一行

n< space>,作用:按下数字n后再按空格键,光标会向右移n个字符

0或功能键Home,作用:移动到这一行的行首

$或功能键End,作用:移动到这一行的行尾

H,作用:光标移动到屏幕的第一行的第一个字符

M,作用:光标移动到屏幕的中央的那一行的第一个字符

L,作用:光标移动到屏幕的最后一行的第一个字符

G,作用:光标移动到这个文件的最后行

nG,作用:n为数字。移动到这个文件的第n行

gg,作用:移动到这个文件的第一行,相当于1G

n[Enter],作用:n为数字。光标向下移动n行

2.4、屏幕操作命令

        在命令行模式和输入模式下都可以使用屏幕滚动命令,以屏幕为单位的光标操作,常用于滚屏和分页的按键如下:

[Ctrl]+f,作用:屏幕向下移动一页,相当于Page Down按键

[Ctr]+b,作用:屏幕向上移动一页,相当于Page Up按键

[CtrI]+d,作用:屏幕向下移动半页

[Ctrl]+u,作用:屏幕向上移动半页

2.5、文本修改命令

x,作用:删除光标所在位置上的字符

dd,作用:删除光标所在行

n+x,作用:向后删除n个字符,包含光标所在位置

n+dd,作用:向下删除n行内容,包含光标所在行

yy,作用:将光标所在行复制

n+yy,作用:将从光标所在行起向下的n行复制

n+yw,作用:将从光标所在位置起向后的n个字符串(单词)复制

p,作用:将复制(或最近一次删除)的字符串(或行)粘贴在当前光标所在位置

u,作用:撤销上一步操作

.,作用:重复上一步操作

2.6、其他命令

2.6.1、块选择按键

v, 作用:字符选择,将光标经过的地方反白选择

V, 作用:行选择,将光标经过的地方反白选择

[Ctrl]+v, 作用:块选择,可以用长方形的方式选择数据

2.6.2、多文件编辑

:n,作用:编辑下一个文件

:N,作用:编辑上一个文件

:files,作用:列出目前这个vim打开的所有文件

2.6.3、多窗口功能

,作用:打开一个新窗口,如filename,表示在新窗口新打开一个新文件,否则表示两个窗口
为一个文件内容

[Cr]+w+j,作用:先按下Ctrl键不放,再按下w键后放开所有的按键,然后再按下j键,则光标可移动
到下方的窗口

[Ctrl]+w+ k,作用:同上,不过光标移动到上面的窗口

[CtrI]+ w+q,作用:结束离开当前窗口

2.7、nano编辑器

 打开方式:在终端输入nano (无需下载)     

显示结果如下图1所示:

 指令提示如上图;

2.8、gedit编辑器

打开方式1:在终端输入gedit(无需下载)

打开方式2:在DASH中输入gedit,搜索出gedit的图标,点击图标即可打开gedit编辑器

方式1如下图2:

 图2

因为vi编辑器比较常用,这两种编辑器就不介绍了。

三、gcc编译器

3.1、编译器使用

3.1.1、gcc编译流程

预编译、编译、汇编(生成目标文件)、连接(生成可执行的文件);

预编译(预处理):

        主要处理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文件

 

 显示输出内容,执行当前工作路径下的可执行文件(是我们刚刚生成的文件);

3.1.2、gcc编译器的参数说明

总体参数选项如下:

-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,作用:把所有的警告信息转换成错误信息,并在警告发生时终止编译

3.2、gdb调试器

3.2.1、gdb功能介绍(含命令参数)

        监视或修改程序中变量的值;设置断点,以使程序在指定的代码行上暂停运行;单步执行或程序跟踪;

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参数指定文件名);

猜你喜欢

转载自blog.csdn.net/qq_57663276/article/details/127657040