Linux下C语言编译环境概述
编译器:VI
编译器:GCC
调试器:GDB
项目管理器:make
vi编辑器
三种模式
命令行模式:默认模式,不可以编辑,只可以上下移动光标“整行删除,删除字符”,“复制”,“粘贴”
插入模式:只有在该模式下用户才可以文字编辑输入,esc返回命令行模式
底行模式: 这个模式光标在底部,用户可以保存文件和退出,也可以设置编辑环境
vi工作流程
- 在命令行输入 vi 文件名,进入默认模式
- 输入i(在光标当前位置插入),进入插入模式,esc返回命令行模式
- 输入:wq进入底行模式
i | 插入位置为光标位置 |
a | 插入位置为光标下一位置 |
o | 插入位置为光标下一行 |
/name | 光标后查找name字符串 |
?name | 光标签查找name字符串 |
x | 删除所在位置一个字符 |
X | 删除所在位置前一个字符 |
yy | 复制光标所在行 |
nyy | 复制光标所在行下n行 |
gcc编译器
编译流程(四个步骤):
预处理阶段:对头文件和宏定义进行处理
gcc -E 文件名.c -o 文件名.i
编译阶段:检查规范性,是否有错误,生成汇编代码
gcc -S 文件名.i -o 文件名.s
汇编阶段:把编译阶段生成的代码转换成目标文件
gcc -c 文件名.s -o 文件名.c
链接阶段:生成可执行文件
gcc 文件名.c -o 文件名
库函数:
分为静态库和动态库
静态库:编译链接的时候,将库文件代码全部加入可执行程序【生成的文件较大,运行就不需要库文件了】
静态库:程序执行的时候才加载库【节省系统开销】
gdb调试器
使用流程:
1.gcc -g test.c -o test,使用gcc编译器编译程序,加上-g,让编译的代码中包含调试信息
2.gbd 可执行文件名,使用gdb调试可执行文件
3.键入l,查看所载入的文件,列出的代码给出了具体行号
4.键入b 行号,设置断点
5.键入info b,查看断点情况
6.在断点键入bt,查看调用函数(堆栈)的情况
7.键入r,执行程序到断点
8.在断点处键入p 变量名,查看断点处相关变量值
9.单步运行:n(next 不进入断点处函数)和s(step 执行完断点处函数)
10.键入n,恢复程序运行
make工程管理器
用于管理较多文件,根据时间戳减少编译工作量,通过makefile文件执行大量编译工作。
makefile基本结构
目标体:创建目标体所依赖文件
具体指令(这一行必须tab开头)
makefile变量
简化了makefile维护工作量
常见预定义变量的作用:简化工作量
makefile规则
高效,为什么?简化了makefile操作,像批处理一样