C语言编译的基本策略是使用程序将源代码文件转换为可执行文件。

这个过程分为三部分:

源代码文件 ------> 目标代码文件------>可执行文件

用到两个组件:

编译器、链接器。

编译器的作用是将源代码转换为中间代码,产生中间文件。

链接器将此中间代码与其他代码相结合来生成可执行文件。

 

中间文件的形式有多种,一般就是将源代码文件转换为机器语言代码,将其结果放置在一个目标代码文件中。虽然目标代码文件包含机器代码文件,但是该文件还不能运行。目标文件包含源代码的转换结果,但它还不是一个完整的程序,也就是不是一个完整的可执行文件,它还需要与一些基本元素。

目标代码文件中所缺少的第一个元素是一种叫做启动代码的东西,这个代码相当于程序跟操作系统之间的接口。

所缺少的第二个元素是库例程的代码,几乎所有c程序都利用标准c库中所包含的例程,例如printf。

而链接器的作用就是将这三部分结合在一起,并将它们存放在单个文件,即可执行文件中,这样,一个完整的可执行文件就产生了。

简而言之,目标文件只包含源代码转换成的机器语言,而可执行文件包含所使用的的库例程和启动代码的机器代码。

更多推荐

C语言编译的基本原理