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