一、GCC
(最最常见:gcc hello.c –o hello)
①常用选项
-c:仅对源文件进行编译
-o:对生成的代码进行优化,有0,1,2,3四个等级,默认为2
-g:加入调试信息
-I dir:编译源文件是增加一个搜索库文件的目录
-w:禁止所有警告
-W warning:允许warning这样的警告
②gcc文件扩展名规范
.i:预处理后的c语言源程序
.ii:预处理后的C++语言程序
.s:预处理后的汇编程序
.S:未预处理的汇编程序
.o:目标文件
③gcc使用举例
1)生成预处理文件
gcc –E hello.c –o hello.i
说明: -E 只激活预处理。
2)生成汇编文件
gcc –S hello.c –o hello.s
说明:-S 只激活预处理和编译,就是指把文件编译成为汇编代码。
3)生成目标文件
gcc –c hello.c –o hello.o
说明:-c:仅对源文件进行编译。
4)生成可执行文件
gcc hello.c –o hello
5)编译多个文件
目录结构一:
编译命令:gcc my_app.c greeting.c –o my_app
目录结构二:
方法一编译命令:gcc my_app.c functions/greeting.c –o my_app –I functions
方法二编译命令(分步): gcc –c my_app.c
gcc –c functions/greeting.c –I functions
gcc my_app.o greeting.o –o my_app
二、GNU MAKE
①make的作用?
答:当工程量比较大时,如果仅仅修改了一个文件,在手动编译方式下则需要一个一个重新编译每一个文件,但是如果是自动编译就要方便的多,使用make,一句就可以更新整个工程。
②初级Makefile
③中级Makefile
$^:所有依赖的名字。
$@:规则的目标文件名。
$<:第一个依赖的文件名④高级Makefile
三、GDB
①如何进入调试?
first step: gcc –g hello.c –o hello
then: gdb hello
②常见命令使用
1、查看当前源程序的信息:info source
2、设置断点:br swap(某一函数初) br 23(某一行) info br(查看断点信息) br 23 if j==5(for)
3、删除断点:del 12(某一行)
4、执行程序:run
5、查看变量x的值: p x
6、单步走:n
7、继续执行:cont