Módulo de objeto (también - archivo de objeto, archivo de objeto en inglés ) - un archivo con una representación intermedia de un módulo de programa separado, obtenido como resultado del procesamiento del código fuente por parte del compilador . Un archivo de objeto contiene un código especialmente preparado (a menudo llamado binario o binary ) que se puede combinar con otros archivos de objeto utilizando un enlazador ( enlazador ) para obtener un módulo o biblioteca ejecutable listo para usar.
Los archivos de objetos son bloques de código de máquina y datos con direcciones indefinidas de referencias a datos y procedimientos en otros módulos de objetos, así como una lista de sus procedimientos y datos. El enlazador ensambla el código y los datos de cada módulo de objeto en un programa final y calcula y completa las direcciones de referencia cruzada entre los módulos. La vinculación con bibliotecas estáticas la realiza el vinculador o el vinculador (que puede ser un programa independiente o parte del compilador), mientras que la vinculación con el sistema operativo y las bibliotecas dinámicas se realiza en tiempo de ejecución, después de que el programa se carga en la memoria.
El programador genera código objeto utilizando un compilador o ensamblador. Por ejemplo, en Linux, el compilador GNU Compiler Collection generará archivos .o que utilizan el formato ELF. La compilación en Windows produce archivos .obj usando el formato COFF. Luego, el enlazador se usa para combinar el código objeto en un solo programa o biblioteca ejecutable, extrayendo las 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, se definieron y usaron algunos formatos como ELF y COFF en diferentes tipos de sistemas. Se puede usar el mismo formato tanto para la entrada como para la salida del enlazador y, por lo tanto, el formato de la biblioteca y el ejecutable. Algunos formatos pueden contener código de máquina para diferentes procesadores, con la variante correcta elegida por el sistema operativo cuando se carga el programa [1] .