# Fitxer objecte

Un fitxer objecte és un fitxer compilat que conté codi màquina o bytecode, així com altres dades i metadades, generades a partir del codi font durant el procés de compilació. També es genera un fitxer objecte des d'un assemblador. El codi màquina que es genera es coneix com a codi objecte.
El codi objecte sol ser reubicable, i normalment no executable directament. Hi ha diversos formats per als fitxers d'objectes i el mateix codi màquina es pot empaquetar en diferents formats de fitxers d'objectes. Un fitxer objecte també pot funcionar com una biblioteca compartida.
Les metadades que poden incloure els fitxers d'objectes es poden utilitzar per enllaçar o depurar; inclou: informació per resoldre referències creuades simbòliques entre diferents mòduls, informació de reubicació, informació de desenrotllament de la pila, comentaris, símbols de programa, informació de depuració o perfilació. Altres metadades poden incloure la data i l'hora de compilació, el nom i la versió del compilador i altra informació d'identificació.
El terme "programa d'objectes" data almenys de la dècada de 1950:
"Un terme de programació automàtica per al programa en llenguatge màquina produït per la màquina mitjançant la traducció d'un programa font escrit pel programador en un llenguatge similar a la notació algebraica."
Un programador d'ordinadors genera codi objecte amb un compilador o assemblador. Per exemple, a Linux, el compilador de la col·lecció de compiladors de GNU generarà fitxers amb una extensió.o que utilitzen el format ELF. La compilació a Windows genera fitxers amb una extensió.obj que utilitzen el format COFF. A continuació, s'utilitza un enllaçador per combinar el codi objecte en un programa executable o una biblioteca que extreu biblioteques del sistema precompilades segons sigui necessari.

## Formats de fitxer d'objecte

Hi ha molts formats de fitxer d'objectes diferents; originalment cada tipus d'ordinador tenia el seu propi format únic, però amb l'arribada d'Unix i altres sistemes operatius portàtils, alguns formats, com ELF i COFF, s'han definit i utilitzat en diferents tipus de sistemes. És possible que el mateix format s'utilitzi com a entrada i sortida de l'enllaç i, per tant, com a format de biblioteca i fitxer executable. Alguns formats poden contenir codi màquina per a diferents processadors, amb el correcte escollit pel sistema operatiu quan es carrega el programa.
Alguns sistemes fan una distinció entre formats que són directament executables i formats que requereixen processament per part de l'enllaçador. Per exemple, OS/360 i els successors anomenen el primer format un mòdul de càrrega i el segon un mòdul d'objectes. En aquest cas, els fitxers tenen formats completament diferents.
El disseny i/o l'elecció d'un format de fitxer objecte és una part clau del disseny global del sistema. Afecta el rendiment de l'enllaç i, per tant, el canvi del programador mentre es desenvolupa un programa. Si el format s'utilitza per a executables, el disseny també afecta el temps que triguen els programes a començar a executar-se i, per tant, la capacitat de resposta dels usuaris.

## Referències

* ↑ «How to execute an object file: Part 1» (en anglès), 02-03-2021. [Consulta: 8 desembre 2023].
* ↑ «What's an object file in C?» (en anglès). [Consulta: 8 desembre 2023].
* ↑ «Chapter 4: Object Files» (en anglès). [Consulta: 8 desembre 2023].
* ↑ «Creating object files (Libtool)» (en anglès). [Consulta: 8 desembre 2023].