C中目标代码文件,可执行文件和库

      C编程的基本策略是使用程序将源代码文件转换为可执行文件,此文件包含可运行的机器语言代码。 C分两步完成这一工作:编译和链接。编译器将源代码转换为中间代码,连接器将此中间代码与其他代码相结合来生成可执行文件。C使用编译和链接生成可执行文件的方法便于程序的模块化。您可以分别编译各个模块,然后使用连接器将编译过的模块结合起来。这样,如果需要改变一个模块,则不必重新编译所有其他模块。同时,连接器将程序与预编译的库代码结合起来。

      中间文件的形式有多种选择。最一般的选择,是将源代码转换为机器语言代码,将结果放置在目标代码文件中。虽然目标文件包含机器语言代码,但该文件还不能运行。目标文件包含源代码的转换结果,但还不是一个完整的程序。

      目标代码文件中能够缺少的一个元素是一种叫做启动代码(start-up code)的东西,此代码相当于您程序和操作系统之间的接口。例如:可以在DOS或linux下运行一个IBM PC兼容机,在这两种情况中硬件是相同的,若以都会使用相同的目标代码,但是DOS与Linux要使用不同的启动代码,因为这两种系统处理程序的方式不同。

      目标代码文件所缺少的第二个元素是库例程的代码。几乎所用C程序都利用标准C库中所包含的例程(称为函数)。例如有的程序中的printf()函数,目标代码文件不包含这一函数代码,他只包含声明使用printf()函数的指令,实际代码存储在另一个称为“库”的文件中。库文件中包含许多函数的目标代码。

      链接器的作用是将目标代码,系统的标注启动代码和库代码结合在一起,并将它们存放在单个文件,即可执行文件中。对库代码来说,连接器中从库中提取程序使用的函数的代码。

      简而言之,目标文件和可执行文件都是有机器语言指令组成的。但目标文件之包含您所编写的代码转换成的机器语言,而可执行文件还包含您所使用你哦个的库函数已经启动代码的机器代码。

 

 

 

 

你可能感兴趣的:(文件)