使用Vi编辑器编写Linux0.11程序并编译运行

一.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

  • 10
    点赞
  • 58
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_坐看云起时_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值