一GCC的使用
1. Gcc的四个阶段: 1)预处理 2)编译 3)汇编 4)连接
2. Gcc文件的后缀类别: (.c文件):C语言代码 .(a文件):目标文件构成的库(.C文件或者.cc):C++源代码(.h文件):头文件(.i文件):已经预处理过的C源代码(.ii文件):已经预处理过的C++源代码(.o文件):编译后的目标文件(.s):汇编源代码文件(.S文件):经过预编译的汇编语言代码文件
3. Gcc编译选项 (1)-o:确定可执行文件的名字,如:gcc hello.c –o hello ,生成一个hello文件。(2)-c:只编译,不连接成可执行文件,编译器只是生成.o为后缀的目标文件。(3)-g:产生调试工具(GNC的gdb)所必要的符号信息。(4)-O:对程序进行优化编译、链接,会使用整个代码在编译、链接过程中进行优化(-O2比-O更优化)。(5) –I:指定目录加入到程序头文件的目录列表中。如:gcc –I/usr/include hello.c –o hello (6)-static:静态链接库文件如:gcc –static hello.c –o hello (7)-Wall:生成所有警告信息。(8)-w :不生成任何警告信息。(9)-D:相当于使用define。如 gcc –D hello.c –ohello
二GDB
1. GDB主要是调试所用,先用gcc –ghello.c –o hello 生成调试的文件。
2. 两种启动方式(1)gdb hello 。 (2)gdb ;file hello
3. GDB 命令(注意括号内为快捷键):1)list(l)查看程序 。2)break(b)+函数名 :在程序入口添加断点。 3)break (b)+行号 在指定行添加断点。4) break (b)+文件名:行号 在指定文件的指定行添加断点。 5)break (b)行号if条件 当条件条件为真时,在指定断点处生效,如b 10 if i=3 意思是在第10行当i=3是断点生效。6) info b 查看断点信息 7)delete +断点编号删除断点。 8) run 运行程序 9)next 但不运行程序(不进入子函数)10) step 但不运行(进入子函数) 11) continue 继续运行 12)print+变量名 查看指定变量值 13) finish 运行程序,知道当前程序结束 14) watch +变量名 对指定变量进行监控 15)quit 退出gdb
三 makefile的使用
1 Make可以是整个软件工程的编译、链接只需要一个命令就可以完成。执行时需要一个命名为makefile的文件。
2 make的规则:
target :prerequisitescommand
目标 : 依赖 命令
hello: hello.c
@gcc –c hello.c–o hello
@ 表示没有回显
$^ 代表所有的依赖文件
$@ 代表目标
$< 代表第一个依赖文件
3伪目标 makefile中没有依赖的,只有执行动作的目标称为“伪目标”(phony targets)