- .c : C语言源代码文件
- .a : 由目标文件构成的库文件
- .C, .cc或.cxx : C++源文件
- .h : 头文件
- .i : 已经预处理过的C源代码文件
- .ii : 已经预处理过的C++源代码文件
- .o : 编译后的目标文件
- .s : 汇编语言源代码文件
- .S : 通过预编译的汇编语言源代码文件
gcc [options] [filenames]
gcc经常使用参数
- -o output_filename : 肯定可执行文件名
- -c : 只编译,不连接成可执行文件,只生成.o为后缀的目标文件。
- -g : 产生调试工具(GNU的gdb)所必要的符号信息。
- -O : 对程序进行优化编译、连接,在编译、连接过程当中进行优化处理,产生文件可提升执行效率,但编译、连接速度慢。
- -O2 : 比-O更好的优化编译、连接。
- -Idirname : 将dirname所指出的目录加入到程序头文件目录列表中。
- -Ldirname : 将dirname所指出的目录加入到库文件的目录列表中。默认状态下,连接程序ld在系统的预设路径(如/usr/lib)寻找所须要的库文件,这个选项告诉程序先到-L指定的目录中去寻找,而后再到系统预设路径中寻找。
- -lname : 在连接时,装载名字为“libname.a”的函数库,该函数库位于系统预设的目录或者由-L选项指定的目录下。通常能够简写,如-lm表示“libm.a”。
- -static : 使用静态连接库文件。
- -Wall : 生成全部警告信息。
- -w : 不生成任何警告信息
- -DMACRO : 定义MACRO宏,等效于在程序中使用#define MACRO。
GDB命令
- gdb ExecutableFile : 启动gdb(或者是先输入gdb,而后再输入file ExecutableFile)。
- list(l) : 查看程序。
- break(b) breakpoint : 设置断点,其中breakpoint能够是函数名,行号,文件名:行号。
- break(b) 行号 if 条件 : 当条件为真时,指定行号处断点生效,例b 5 if i=10,当i等于10时第5行断点生效。
- info break : 查看全部设置的断点。
- delete 断点编号 : 删除断点。
- run(r) : 开始运行程序。
- next(n) : 单步运行程序(不进入子程序)。
- step(s) : 单步运行程序(进入子程序)。
- continue(c) : 继续运行程序。
- print(p) 变量名 : 查看指定变量值。
- finish : 运行程序,直到当前函数结束。
- watch 变量名 : 对指定变量进行监控。
- quit(q) : 退出gdb。