Archivo de objeto


Un archivo de objeto es un archivo de computadora que contiene código de objeto , es decir, salida de código de máquina de un ensamblador o compilador . El código objeto suele ser reubicable y, por lo general, no se puede ejecutar directamente . Hay varios formatos para archivos de objetos y el mismo código de máquina se puede empaquetar en diferentes formatos de archivos de objetos. Un archivo de objeto también puede funcionar como una biblioteca compartida .

Además del código de objeto en sí, los archivos de objeto pueden contener metadatos utilizados para vincular o depurar, que incluyen: información para resolver referencias cruzadas simbólicas entre diferentes módulos, información de reubicación , información de desenrollado de pila , comentarios , símbolos de programa , información de depuración o creación de perfiles . Otros metadatos pueden incluir la fecha y hora de compilación, el nombre y la versión del compilador y otra información de identificación.

Término en programación automática para el programa en lenguaje de máquina producido por la máquina al traducir un programa fuente escrito por el programador en un lenguaje similar a la notación algebraica. [1]

Un programador de computadoras genera código objeto con un compilador o ensamblador . Por ejemplo, en Linux , el compilador GNU Compiler Collection generará archivos con una extensión .o que utilizan el formato ELF . La compilación en Windows genera archivos con una extensión .obj que utilizan el formato COFF . Luego, se usa un enlazador para combinar el código de objeto en un programa ejecutable o biblioteca que extrae bibliotecas del sistema precompiladas según sea necesario.

Hay muchos formatos de archivos de objetos diferentes; Originalmente, cada tipo de computadora tenía su propio formato único, pero con la llegada de Unix y otros sistemas operativos portátiles , algunos formatos, como ELF y COFF , se han definido y utilizado en diferentes tipos de sistemas. Es posible utilizar el mismo formato como entrada y salida del enlazador y, por lo tanto, como biblioteca y formato de archivo ejecutable . [2] : p.16  Algunos formatos pueden contener código de máquina para diferentes procesadores, con el correcto elegido por el sistema operativo cuando se carga el programa. [3]

Algunos sistemas distinguen entre formatos que son directamente ejecutables y formatos que requieren procesamiento por parte del enlazador. Por ejemplo, OS / 360 y sus sucesores llaman al primer formato un módulo de carga y al segundo un módulo de objeto . En este caso, los archivos tienen formatos completamente diferentes.