gcc的编译过程详解

图片[1]-gcc的编译过程详解-不念博客
  1. 预处理(Preprocessing)
  • 输入文件:源代码文件(通常以 .c、.cpp、.c++、.h 等为扩展名)。
  • 处理工具:预处理器(cpp)。
  • 过程:预处理器会执行一系列的预处理操作,包括宏替换、文件包含、条件编译等。产生一个新的临时文件,通常以 .i 或 .ii 为扩展名。
gcc -E input.c -o output.i
  1. 编译(Compilation)
  • 输入文件:预处理生成的文件(.i 或 .ii)。
  • 处理工具:编译器(cc1)。
  • 过程:编译器将源代码翻译成汇编代码。产生一个汇编文件,通常以 .s 为扩展名。
gcc -S output.i -o output.s
  1. 汇编(Assembly)
  • 输入文件:编译生成的汇编文件(.s)。
  • 处理工具:汇编器(as)。
  • 过程:汇编器将汇编代码翻译成目标文件(机器码)。产生一个目标文件,通常以 .o 或 .obj 为扩展名。
gcc -c output.s -o output.o
  1. 链接(Linking)
  • 输入文件:目标文件、库文件等。
  • 处理工具:链接器(ld)。
  • 过程:链接器将目标文件、库文件等合并生成最终的可执行文件。链接的过程包括地址解析、符号解析、重定位等。
gcc output.o -o executable
© 版权声明
THE END