在Linux中,gcc更像一个工具大管家,管理很多工具一起来对C程序进行编译。详细过程请看下图,带阴影的箭头表示文件的流程,空白箭头表示控制过程:
下面详细介绍一下这个过程。
1、程序员在Linux终端中输入命令gcc eatc.c –o eatc
2、gcc接管Linux的控制权,然后立即启用一个工具C preprocessor(cpp)。这个工具处理C语言的源代码文件(eatc.c),处理比如#include、#define之类的东西(预处理)。
3、之后,gcc接管。gcc把预处理后的文件进一步处理,变成和原始的C文件等价的 .s 汇编文件,这是一个人工可以读懂的文件。
4、之后,gcc就省事了。它把 .s 文件交给gas(一种GNU assembler)进行处理,生成 .o 文件。
5、之后,再使用ld(一种GNU linker)进行处理,把文件中使用到的C库程序全部都链接到一起。最终形成一个可执行文件。
6、gcc把控制权交还给Linux。