Qu'est-ce qu'un fichier objet?
Un fichier objet est un fichier informatique généré par un programme appelé compilateur. Il contient des données ainsi que des instructions. Les compilateurs traduisent le code source du langage de programmation en une forme lisible par une machine intermédiaire, appelée code objet. Les programmes plus petits peuvent être compilés dans un fichier objet unique, tandis que les programmes plus grands sont généralement compilés dans plusieurs fichiers de fonctions connexes. Un lien est associé à ces fichiers d'objets individuels et des informations spécifiques au système d'exploitation sont ajoutées pour former un programme exécutable.
En pratique courante, un fichier objet est désigné par une extension de fichier ".obj". Il existe cependant plusieurs formats différents pour ces fichiers. Les plus courants sont le format OMF (Relocatable Object Module Format) Intel et le format COFF (Common Object File Format) de Windows® et UNIX® System V. Dans de nombreux systèmes INIX®, le format ELF (Executable and Linkable Format) est devenu remplacer COFF.
Quel que soit le format, un fichier objet contient généralement trois types d'informations qui lui permettent d'interagir avec d'autres modules du programme. Les procédures et les données ouvertes à une référence externe se voient attribuer des noms permettant de les appeler à partir d'autres modules. De même, les références à des informations extérieures au module sont notées mais ne sont pas nommées. Lorsque les fichiers sont liés, les références non nommées se voient attribuer le nom qui leur est donné dans le module où elles ont été définies à l’origine. Les noms locaux sont utilisés pour les instructions et les données référencées uniquement dans un module.
Tous les codes pouvant être liés ne sont pas stockés sous forme de fichiers objets. Les bibliothèques sont des collections de routines précompilées stockées sous forme de code objet. Ils sont produits de la même manière que les fichiers objet et sont utiles pour stocker des procédures fréquemment appelées. Lorsqu'un éditeur de liens ne trouve pas de référence dans d'autres fichiers objets, il la recherche automatiquement dans un fichier de bibliothèque. La plupart des implémentations d'un langage de programmation sont fournies avec une bibliothèque de fonctions standard.
Grâce à la liaison dynamique, un fichier objet peut être utilisé simultanément par plusieurs programmes en cours d'exécution. Au lieu de lier le code d'objet à un programme lorsqu'il est lié, il est récupéré lorsque le programme est chargé ou au moment de l'exécution lorsqu'une procédure est référencée. Dans l'environnement Windows®, ces bibliothèques sont appelées bibliothèques de liens dynamiques et sont désignées par une extension ".dll". Les systèmes similaires à Unix® appellent souvent ce type de fichier un objet partagé dynamique (DSO). Ce type de fichier objet peut également être implémenté pour être utilisé avec un programme particulier et ferait partie de l'installation de ce programme.