1.预处理(Preprocessing)
输入文件:源代码文件(通常以 .c、.cpp、.c++、.h 等为扩展名)。
处理工具:预处理器(cpp)。
过程:预处理器会执行一系列的预处理操作,包括宏替换、文件包含、条件编译等。产生一个新的临时文件,通常以 .i 或 .ii 为扩展名。
gcc -E input.c -o output.i
2.编译(Compilation)
输入文件:预处理生成的文件(.i 或 .ii)。
处理工具:编译器(cc1)。
过程:编译器将源代码翻译成汇编代码。产生一个汇编文件,通常以 .s 为扩展名。
gcc -S output.i -o output.s
3.汇编(Assembly)
输入文件:编译生成的汇编文件(.s)。
处理工具:汇编器(as)。
过程:汇编器将汇编代码翻译成目标文件(机器码)。产生一个目标文件,通常以 .o 或 .obj 为扩展名。
gcc -c output.s -o output.o
4.链接(Linking)
输入文件:目标文件、库文件等。
处理工具:链接器(ld)。
过程:链接器将目标文件、库文件等合并生成最终的可执行文件。链接的过程包括地址解析、符号解析、重定位等。
gcc output.o -o executable
本文章已结束,如转载请注明:汇站网 » 详解 gcc 的编译过程