编译器概论
gcc编译器 将hello.c文本文件转化为hello可执行文件的过程:
1.预处理
2.编译(狭义)
3.汇编
4.链接
上述过程也统称为编译。但是之后所提到的编译指第二步狭义编译,4步统称为bulid。
预处理:
C语言的代码首先由预处理器对 #include和 #define进行处理。具体来说,就是读入头文件,将所有的宏展开。预处理是纯文本操作,不考虑C语言语法的含义。
(狭义)编译:
接着,编译器对预处理器的输出进行编译,生成汇编语言的代码。一般来说,汇编语言的代码的文件的扩展名是".s"。
汇编:
然后,汇编语言的代码由汇编器转换为机器语言,这个处理过程称为汇编。汇编器的输出称为目标文件。一般来说,目标文件的扩展名是".o"。
链接:
目标文件本身还不能直接使用,无论是直接运行还是作为程序库(library)文件调用都不可以。将目标文件转换为最终可以使用的形式的处理称为链接(link)。使用程序库的情况下,会在这个阶段处理程序库的加载。