À retenir
- C'est le résultat direct de la compilation d'un fichier source unique.
- Il contient du code binaire (0 et 1) mais n'est pas un programme fini.
- Il doit passer par l'étape de l'édition de liens (linker) pour devenir un exécutable.
Un fichier objet est une étape intermédiaire entre le code écrit par un programmeur et le logiciel final. C'est un fichier contenant du code machine (compréhensible par le processeur) mais qui ne peut pas encore être exécuté car il lui manque les connexions avec les autres parties du programme. On peut le comparer à une brique de construction déjà taillée, mais qui n'a pas encore été cimentée aux autres pour former un mur.
Étymologie
Le terme vient de l'anglais object file. Ici, le mot objet ne fait pas référence à la programmation orientée objet, mais désigne la cible (l'objectif) de la phase de compilation. C'est le résultat concret produit par le compilateur à partir d'un fichier source.
Exemples d'usage
- Un fichier
main.ogénéré par le compilateur GCC sous Linux après avoir traité un fichiermain.c. - Un fichier
calcul.objcréé par Visual Studio sur Windows lors de la compilation d'un module de calcul.
Cas d'usage
Ce concept intervient principalement dans les langages compilés comme le C, le C++ ou le Fortran. Il permet la compilation séparée : au lieu de recompiler tout un projet de 1000 fichiers à chaque modification, on ne recompile que le fichier modifié en un nouveau fichier objet, puis on les assemble tous à nouveau.
Bonnes pratiques
Il est inutile d'inclure les fichiers objets dans un système de contrôle de version (comme Git), car ils sont générés automatiquement et dépendent de la machine. Il est aussi important de nettoyer ces fichiers (souvent via une commande make clean) avant de distribuer son code source ou de changer de plateforme.
Synonymes
Antonymes
Conseil
Si vous débutez et que vous voyez des fichiers .o ou .obj apparaître dans votre dossier de projet, ne paniquez pas : ce sont des fichiers temporaires normaux. Ne tentez pas de les ouvrir avec un éditeur de texte, vous n'y verriez que des caractères incompréhensibles.
Questions fréquentes
Pourquoi ne peut-on pas lancer un fichier objet ?
Parce qu'il contient des adresses mémoires incomplètes et des références à des fonctions externes qui n'ont pas encore été localisées.
Quelle est la différence avec un exécutable ?
L'exécutable est le résultat final de l'assemblage de plusieurs fichiers objets et bibliothèques ; il possède un point d'entrée clair pour le système d'exploitation.
Un fichier objet est-il lisible par un humain ?
Non, c'est un format binaire. Pour le lire, il faut utiliser des outils spécifiques comme 'nm' ou 'objdump' qui traduisent son contenu.