文章目录
主要内容:
- GCC编译器
- GDB调试工具
- Make工具
GCC编译器
1.GCC编译器介绍
GCC包含了预处理器、编译器、汇编器、链接器等组件。
输入文件的类型和传递给gcc的参数决定了gcc调用具体哪些组件。
2.GCC编译过程
一般情况下,C程序的编译过程是:
- 预处理 >>> 生成 test.i 文件
- 编译成汇编代码 >>> 编译得到 test.s 文件 (可读文本文件)
- 汇编成目标代码 >>> 汇编得到 test.o 文件(二进制文件)
- 链接 得到.o 文件
预处理
使用参数 -E
gcc -E -o gcctest.i gcctest.c
使用wc命令比较预处理后的文件与源文件,可以看到两个文件的差异。
编译成汇编代码
编译成目标代码
编译成可执行代码
3.GCC编译优化
-O0 -O1 -O2 -O3
在结果中,-O3不一定是优化最多的。
4.头文件和库函数目录
4.1 GCC -l dir参数的使用![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/fbc8f48eb85b20a54b97a8c9bab50fec.png)
举例:
对于自定义头文件 my.h,不能使用 #include <my.h> 修改方法如下两种:
4.2 GCC创建函数库
静态库和动态库
静态库代码装载速度快,执行速度比动态链接库快。
静态库的生成与使用
动态库的生成与使用
GDB调试工具
GDB的命令
命令行输入 gdb 进入GDB中。
GDB命令的使用
1.gdb filename
file test
2.list
list 1,10 //显示1~10行
list 默认显示10行
3.回车符
重复执行上一条命令
4.help
返回gdb的命令提示信息
5.设置断点
b 1 //在第一行设置断点
break 1 //在第一行设置断点
6.info breakpoints
显示断点信息
7.clear
清除已经定义的断点
clear n //n表示断点行号
8.delete
删除指定/全部断点
delete 3 //删除编号为3的断点
9.print
输出断点处变量的值。
10.quit
退出gdb
Make 工具
Make引入
Makefile文件
make
makefile