【linux】vi、gcc、make
@toc
vi
1、调用vi
vi filename
2、vi的三种模式
Command(命令)模式,用于输入命令;
Insert(插入)模式,用于插入文本;
Visual(可视)模式,用于可视化的的高亮并选定正文。
3、文件的保存和退出
Command模式是vi的默认模式,如果处于其它模式时,要通过ESC键
切换过来,接着再输入:
号时,vi会在屏幕的最下方等待输入命令;
:w 保存;
:w filename 另存为filename;
:wq! 保存退出;
:wq! filename 注:以filename为文件名保存后退出;
:q! 不保存退出;
:x 应该是保存并退出 ,功能和:wq!相同
4、光标移动;
按ESC进入Command模式后,可以用上下左右键来移动光标;
5、进入插入模式
i 在光标之前插入;
a 在光标之后插入;
I 在光标所在行的行首插入;
A 在光标所在行的行末插入;
o 在光标所在的行的上面插入一行;
O 在光标所在的行的下面插入一行;
s 删除光标后的一个字符,然后进入插入模式;
S 删除光标所在的行,然后进入插入模式;
一般记住i
就可以了
6、文本内容的删除
x 删除一个字符;
#x 删除几个字符,#表示数字,比如3x;
dw 删除一个单词;
#dw 删除几个单词,#用数字表示,比如3dw表示删除三个单词;
dd 删除一行;
#dd 删除多个行,#代表数字,比如3dd 表示删除光标行及光标的下两行;
d$ 删除光标到行尾的内容;
J 清除光标所处的行与上一行之间的空格,把光标行和上一行接在一起;
一般记住x
和dd
就可以了
gcc
Linux下编辑好的C语言程序,需要使用gcc编译工具(Linux系统上一般也可以通过cc别名调用)进行编译连接,生成可执行文件。对于复杂的应用,可能把多个源程序分别编译,最后连接形成执行文件;为了有效管理这类项目,make代码维护工具可以用来定义一系列规则来管理编译连接过程。
Linux下的可执行文件没有特别的后缀名约定,而是通过设置“可执行”属性来区分
另外,Linux默认的执行文件搜索路径也不包括当前目录,所以编译生成的执行文件需要显示指明文件路径来执行(这也就是为什么总是要加上./
)。
(1) 简单使用方法
假设一个C语言源程序名为hello.c,根据该文件生成执行文件的最简单命令为:
gcc hello.c
该命令将生成默认名字为a.out的执行文件;如果希望生成执行文件的名字不同,可以在命令中通过参数指定:
gcc -o hello hello.c
该命令将生成名字为hello的执行文件。
(2) 分解使用
实际上,gcc所做的工作包括预编译、编译、连接等多个环节,上述简单用法隐含了对这几个环节的调用,如果需要分开调用,可以通过不同的命令行参数指定:
gcc -E hello.c -o hello.i -E参数指定进行预编译,预处理的宏定义插入到hello.i中;
gcc -c hello.i -o hello.o -c参数指定编译为目标代码 hello.o,也可以通过源文件直接生成(gcc -c hello.c);
gcc hello.o -o hello 将生成可执行文件,如果由多个源程序文件生成,一般需要在生成时指定多个目标代码模块,例如:gcc hello.o e1.o s2.o -o hello
make
make是一种代码维护工具,在大中型项目中,根据程序各个模块的更新情况,自动的维护和生成目标。
make工具使用的关键是编写高效、简洁、正确的makefile。
借助一个简单的例子来说明:假设一个项目hello,依赖于hello.o、e1.o、e2.o,而hello.o依赖于hello.c、hello.h,e1.o依赖于e1.c、hello.h,e2.o依赖于e2.c;这样形成一棵依赖关系树,父节点依赖于子节点。使用make进行维护时,会对这棵树进行一次遍历,如果发现子节点形成的时间晚于父节点形成的时间便开始调用makefile中指定的命令进行维护。针对此例子的makefile示例如下:
hello: hello.o e1.o e2.o
gcc -o hello hello.o e1.o e2.o
main.o: hello.c hello.h
gcc -c hello.c
e1.o: e1.c hello.h
gcc -c e1.c hello.h
e2.o: e2.c
gcc -c e2.c
makefile放置在与项目源程序文件相同目录中,在该目录中执行make hello
或者make
命令(命令行未target时会默认使用makefile的第一个target),将会根据makefile中定义的依赖关系依次执行编译、连接各个命令,生成hello执行文件。
根据这些缺省规则,可以在简单情况下不编写makefile使用make工具。
例如,对于根据hello.c生成hello执行文件的情况,可以直接使用命令
make hello
效果等同于:gcc -o hello hello.c
内容来自《操作系统》实验作业
- 点赞
- 收藏
- 关注作者
评论(0)