一.vim
1.vim是什么呢?
我们初学c语言时,多半要学习vs(visual studio)工具,这个工具中我们编辑代码或者调试代码来说都是可以在这一个软件中完成的,它是一个多功能的软件。
而Linux中我们需要学习多个工具来实现这整个流程,vim是用来编辑代码的工具。
2.vim的多模式?
vim工具中有多个模式,共10几个模式,为了实现不同场景下的代码编辑,我们最常用的有正常(命令)模式,插入模式和末行模式三个模式。
正常模式我们可以对已有代码进行删除,拷贝移动(yy拷贝dd剪贴p粘贴)
输入i进入插入模式,才可以进行数据输入
使用shift和;进入末行模式,用来进行文件的保存退出
二.makefile
学习makefile我们需要先学习编译过程
1.gcc/g++使用
原始代码文件需要进行一系列处理(编译)才能生成可处理文件。而gcc是c语言代码文件实现处理的编译器,g++是c++实现的编译器。
整个流程大概可分为四个部分,预处理,编译,汇编,链接
2.四个流程中都做了什么
- 预处理:主要进行宏替换,去注释等操作
gcc -E hello.c -o hello.i 这里E就是说明预处理后停止编译,o后是生成的目标文件,(.c)文件经过预处理生成(.i)文件
- 编译:检查是否有语法错误,代码规范性,无误后生成汇编语言
gcc –S hello.i –o hello.s S说明编译后停止,(.i)文件编译后生成(.s)文件
- 汇编:生成机器可识别代码
gcc –c hello.s –o hello.o C说明汇编过程结束后停止,(.s)文件汇编后生成(.o)文件
- 链接:生成可执行文件
gcc hello.o -o hello 同上理解
总算可以正是讲下文了
3.什么是makefile
一个项目的实现离不开数不胜数的源文件,而这些文件该如何编译就成了一个问题,而makefile和make就定义了文件的编译规则。
写好makefile后,只用一个make就可以使项目自动编译。
makefile是一个文件,make是一条命令,两者搭配使用。
我们直接来看一个makefile
g++ 说明我们使用语言是c++,图中g++后的 $@ 代表上一行冒号左边的parser $^代表的是冒号右边的parser.cc $(FLAG)代表的是第一行的代码
相当于 g++ -o parser parser.cc (第一行)
根据(依赖)parser.cc文件生成目标parser可执行文件
其中clean后代表输入make clean 后会删除parser文件
三.gdb
1.什么是gdb
gdb是一个调试工具,程序发布模式有两种,debug和release,只有前者可以调试
而Linux gcc/g++默认生成的是惹了模式,要可调试编译时+g
之后gdb 可执行文件即可
r运行,break n给第n行打断点,delete breakpoint n删除第n行断点。
info break查看断点信息 n运行下一步。