在linux中编译C语言程序,那么就一定会用到gcc
预处理:进行宏替换,去除注释,条件编译,包含头文件,保留pragma
gcc -E test.c -o test.i//将test预处理输出test.i文件
编译:进行词法分析,语法分析,语义分析,优化等处理,生成汇编代码
gcc -S test.i//将预处理输出文件test.i汇编成test.s
汇编:生成test.o机器可识别代码,.o是可重定位的目标文件
gcc -c test.s//只编译不链接
链接:生成可执行文件
gcc test.o//默认生成a.out,可以-o重定向到一个文件
gcc选项:
(1)-E 只激活预处理,不会生成文件,需要重定向到一个输出文件
(2)-S 编译到汇编语言不进行汇编和链接
(3)-c 编译到目标代码
(4)-o 文件输出到文件(5)-g 生成调试信息,当使用gdb调试时,需要用到
代码编写完成,我们一定会用到调试,调试就需要用到gdb了,下面是使用gdb调试时常用的指令
gdb | 可执行文件程序名 |
l (字母l) | 查看当前文件十行 |
l 函数名 | 查看当前文件制定函数 |
b 行号 | 设置断点 |
i b | 查看设置的断点 |
r | 执行到断点处 |
s | 单步调试,进入函数体内 |
n | 执行一步操作finish 跳出函数体 |
u | 跳过单词循环 |
whatis 变量名 | 查看变量类型 |
print 变量名 | 查看变量值 |
q | 退出 |
l 函数名 显示函数代码
设置断点和查看断点
查看数据的值和类型
跳出函数
退出