article

计算机科学中,目标文件(object file) 或者 目标代码(object code)是编译器处理源代码后生成的中间格式,不要和物件導向的编程语言(Object Oriented programming languages)中的对象混淆。目标文件包含有压缩的预解析代码,常被称作二进制代码(binaries),可以同其他目标文件一起被链接从而生成最终的可执行文件或者库文件。一个目标文件大多是机器语言(可以直接被计算机CPU执行的代码)。 每种目标文件格式都是一种计算机文件格式,用来存放目标代码以及由编译器汇编器生成的相关数据。

一个目标文件不仅仅包含目标代码,它也包含relocation信息linker使得链接器可以将多个目标文件装配成一个可执行文件或者库文件,以及包含有 程序符号(变量和函数的名字)和调试信息。

目标文件格式有许多种;初期的各种计算机都拥有自己独特的格式,但随着Unix和其他可移植操作系统的发展推广,一些格式,例如COFFELF,被设计成可以在各种计算机平台上使用。通常,链接器的输入和输出使用相同的格式,库文件和可执行文件也是一样。

目标文件格式的设计和选择是贯穿系统设计的关键部分;它影响着链接器的性能和程序员在开发时的倾向,如果格式是用于可执行文件,那设计就会影响程序的开始运行花费的时间,这会强烈的影响用户的反应。大部分目标文件格式都和数据快的结构相同;这些块可以在虚拟内存系统在换页时被直接调入,而不需要更多的处理来准备。

最简单的目标文件格式是DOSCOM文件格式,它总是被读入一个固定的位置。其他的格式都拥有经过详细部署的结构从而可以在很多页面上运行。

调试信息可以是内置在目标文件中,就像COFF,也可以是半独立格式,例如用于stabs或者DWARF

GNU项目的二进制文件描述库提供了一个通用的API用来操作各种目标文件格式。

格式


著名的目标文件格式:

参考文献


编译原理 | 计算机文件格式

Objektcode | Object file | Objektikood | Code objet | Codice oggetto | Объектный модуль

 

This article is licensed under the GNU Free Documentation License. It uses material from the "目标代码".

Home Pageartsbusinesscomputersgameshealthhospitalshomekids & teensnewsphysiciansrecreationreferenceregionalscienceshoppingsocietysportsworld