一.vi编辑器的使用
Linux自带的一个文本编辑器。
vi编辑器有3种操作模式:命令模式、插入模式和末行模式。
命令模式:当输入vi命令后,会首先进入命令模式,此时输入的任何字符都被视为命令。命令模式用于控制屏幕光标移动、文本字符/字/行删除、移动复制某区段,以及进入插入模式或进入末行模式。
插入模式:在命令模式输入相应的插入命令(例如i命令)进入该模式。只有在插入模式下,才可以进行文字数据输入及添加代码,按Esc键可回到命令模式。
末行模式:在命令模式下输入某些特殊字符,如“/”、“?”和“:”,才可进入末行模式。在该模式下可存储文件或退出编辑器,也可设置环境变量。
通常:
vi 文件名 //进入vi模式
刚进入vi编辑器的界面,此时是命令模式
点击a,i或Insert后,就可进入插入模式
下图是点击i键进入插入模式之后,输入的字符在光标之前
当输入代码完毕后,要返回命令模式,点击Esc键,此时界面如下图:
光标跑到了字符下面
再输入:,就会跑到下面
再输入wq,点击回车,就会保存并退出
如下图便是返回到输入窗口了
下次如需进入,再次用vi 文件名
文章末尾附有vi编辑器常用操作
二.makefile文件
Make工具可以用来管理一个项目中多个源代码文件的编译和链接过程,也可以用来管理多个模块间的依赖关系,甚至是软件的安装过程。
先介绍一个源代码文件的执行旅程:
(1)预处理阶段
预处理器根据以#开头的命令,读取头文件。
(2)编译阶段
将文本文件hello.i变成hello.s。(高级语言到汇编语言)
(3)汇编阶段
将文本文件hello.s翻译成机器语言指令,变成二进制文件hello.o。(汇编语言到机器语言)
(4)链接阶段
与某些库链接,得到可执行文件,hello.o变成了hello,可以放到内存中执行。
我们可以利用makefile文件来实现文件的编译与链接过程,依然在vi编辑器里写。
链接:
hello:hello.o //依赖关系,把二进制文件hello.o跟一些库一起链接成可执行文件(例如
windows就是exe文件)
gcc hello.o -o hello //利用gcc编译器的可执行文件gcc把二进制文件hello.o链接成可执行文
件hello
编译:
hello.o:hello.c //把源代码文件hello.c编译成二进制文件hello.o(中间省略了i,s的过
程)
gcc -c hello.c -o hello.o //利用gcc编译器的可执行文件gcc把源代码文件hello.c编译成二进制
文件hello.o
也可以缩短为一步完成:
hello: hello.c
gcc hello.c -o hello
//!!!注意!!!:空格处一定要用Tab键
写完之后,保存并退出文件(同上方vi编辑器操作)
三.编写一个加法程序
利用C语言
思路:在主函数中调用自定义的加法函数(相当于一个库),所以我们要分别编译加法函数文件(add.c),主函数文件(main.c),并把两个文件链接成可执行文件,执行并输出结果
add.c文件:
main.c文件
makefile文件
编译运行:
vi编辑器常用命令:
命令类型 | 命令形式 | 说明 |
进入vi命令 | vi 文件名 | 显示vi编辑窗口,载入指定的文件,并进入命令模式 |
退出vi命令(退出vi时,若在插入模式,先按Esc返回命令模式) | :q! | 放弃编辑内容,退出vi |
:wq 或 :zz | 保存文件,退出vi | |
:w | 保存文件,但不退出vi | |
:q | 退出vi,若文件被修改过,要确认是否放弃修改的内容 | |
进入末行模式(命令模式下,输入特殊字符进入末行模式) | : | 进入末行命令模式 |
进入插入模式(命令模式下,执行下列命令均可进入插入模式) | i | 插入命令 |
a | 附加命令 | |
o | 打开命令 | |
s | 替换命令 | |
c | 修改命令 | |
r | 取代命令 |
命令模式常用命令
命令 | 说明 |
x | 删除光标所在的字符 |
X | 删除光标所在位置前面的一个字符 |
nx | 删除从光标开始到光标后n-1个字符 |
dw | 删除光标到下一个单词起始位置 |
ndw | 删除光标起的n个字 |
dd | 删除光标所在的行 |
ndd | 删除包括光标所在行的n行 |
Y | 复制当前行至编辑缓冲区 |
nY | 复制当前行开始的n行至编辑缓冲区 |
p | 将编辑缓冲区的内容粘贴到光标的后面 |
参考文献:
一个程序的执行过程_CUMT德一的博客-CSDN博客_软件执行过程
《Linux内核实验教程》4.3