之前一直只知道运行C语言,GCC G++ 等 ,但是对C语言编译执行的过程并不了解。
第一步:预处理
每一个C语言的开头都有头文件 : #include<stdio.h> ,或者 其他的。 需要将它进行预处理, 得到 预处理用于将所有的#include头文件以及宏定义替换成其真正的内容,预处理之后得到的仍 然是文本文件,但文件体积会大很多。
第二步: 编译
这里的编译不是指程序从源文件到二进制程序的全部过程,而是指将经过预处理之后的程序转换成特定汇编代码(assembly code)的过程。
第三步: 汇编
汇编过程将上一步的汇编代码转换成机器码(machine code),这一步产生的文件叫做目标文件,是二进制格式。
第四步 : 链接
链接过程将多个目标文件以及所需的库文件(.so等)链接成最终的可执行文件(executable file)。