GCC基础

GCC编译程序四阶段
  1. 预处理
  2. 编译
  3. 汇编
  4. 连接
GCC后缀识别
  • .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。
相关文章
相关标签/搜索