使用GCC编译一个.c文件影藏了哪些过程?
GCC四步详解
第一步:预处理(也叫预编译)
gcc -E hello.c -o hello.i
或者 cpp hello.c > hello.i 【cpp是预编译器】
将所有#define删除,并且展开所有的宏定义
处理所有的条件预编译指令,如#if #ifdef #undef #ifndef #endif #elif
处理#include,将包含的文件插入到此处,这是一个递归的过程
删除所有注释 // /* */
添加行号和文件名标识,以便于编译时产生的错误警告能显示行号
保留#pragma编译器指令
第二步:编译
gcc -S hello.i -o hello.s
将预处理完的.i文件进行一系列的词法分析、语法分析、语义分析及优
化后生成响应的汇编代码文件,这是整个程序构建的最核心的部分,也是最复杂的部分
第三步:汇编
gcc -c hello.s -o hello.o或者 as hello.s -o hello.o
汇编是将第二步生成的汇编代码编程机器可执行的指令,每一个汇编语句几乎都对应一条机器指令
第四步:链接