1. 编辑:也就是编写C/C++程序
2. 预处理:相当于根据预处理指令组装新的C/C++程序。经过预处理,会产生一个没有宏定义,没有条件编译指令,没有特殊符号的输出文件,这个文件的含义同原本的文件无异,只是内容上有所不同。
3. 编译:将预处理完的文件进行一系列词法分析、语法分析、语义分析及优化后,产生相应的汇编代码文件。
4. 链接:通过链接器将一个个目标文件(或许还会有库文件)链接在一起生成一个完整的可执行程序。 链接程序的主要工作就是将有关的目标文件彼此相连接,也就是将在一个文件中引用的符号同该符号在另外一个文件中的定义连接起来,使得所有的这些目标文件成为一个能够被操作系统装入执行的统一整体。在此过程中会发现被调用的函数未被定义。
编译基本过程
- 预处理(中间过程)
gcc -E gdb.c -o gdb.i # 生成.i文件查看文件 执行了各种预处理操作
- 编译(将预处理的.i文件编译成汇编文件)
gcc -S gdb.i -o gdb.s # 生成.s文件,里面都是汇编代码
- 汇编(将汇编代码汇编成机器码)
gcc -c gdb.s -o gdb.o # 生成.o文件
- 生成可执行文件
gcc gdb.o -o gdb # 生成gdb可执行文件
./gdb # 执行gdb文件