C语言编译过程为:预处理-->编译-->汇编-->链接
1、预处理(Pre-processing)
对源程序中的伪指令(以#开头的指令)和特殊符号进行处理。伪指令包括:宏定义指令、条件编译指令、头文件包含指令。
2、编译(Compiling)
将源程序转换为计算机可以执行的二进制代码。
说明:在linux下,目录文件的缺省后缀为 .o
编译程序将通过词法分析和语法分析,将其翻译为等价的汇编代码。在使用gcc编译时,缺省情况下不输出此汇编代码文件, 如果需要可在编译时指定 -s 选项,这样就会输出同名的汇编文件。
3、汇编(Assembling)
将汇编语言代码翻译为机器语言的过程,产生一个名为 .o 的目标文件。
4、链接(Linking)
目标代码不能直接执行,要将目标代码变为可执行程序,还需要进行链接操作,这样才会生产真正可执行的程序。
链接操作最重要的步骤就是将函数库中的相应代码组合到目标文件中。