.O

Fichier O

Compiled Object File
Poser une question
RÉPONSE RAPIDE

Un fichier .o est la sortie en code machine qu'un compilateur (gcc, clang) produit pour un fichier source C ou C++ avant l'édition de liens. Vous ne pouvez pas l'exécuter directement - l'éditeur de liens combine plusieurs fichiers .o et bibliothèques en un exécutable final ou une bibliothèque partagée. Pour en inspecter un, utilisez nm, objdump ou readelf sur Linux/macOS. Sur Windows, ce rôle est rempli par les fichiers .obj.

Développeur : Unix lineage; ELF defined by System V ABI / Tool Interface Standard, COFF/Mach-O by Microsoft/Apple. No single vendor. Catégorie : Fichiers de développement Standard ouvert MIME: application/x-object
S'OUVRE SUR Windows macOS Linux
Lié : .DO · .MD · .HEX · .XSD

Sur cette page

19k+ extensions indexées
Dernière révision le Aug 17, 2026

Pas sûr de la nature de votre fichier ?

Déposez n'importe quel fichier dans notre identificateur - nous lisons juste les premiers octets pour nommer le format.

Identifier un fichier

Qu'est-ce que le format de fichier O ?

Un fichier .o est un fichier objet compilé - un binaire intermédiaire produit par un compilateur tel que GCC ou Clang lorsqu'il traduit un seul fichier source C en code machine. La sortie contient des instructions machine, des segments de données initialisés et non initialisés, une table des symboles et des entrées de relocalisation, mais elle n'est pas encore exécutable : les références aux fonctions et variables définies dans d'autres unités de traduction sont laissées comme des emplacements non résolus pour l'éditeur de liens.

Le format binaire dépend de la plateforme cible :

  • Sur Linux et la plupart des systèmes Unix/BSD, les fichiers .o utilisent le conteneur ELF (Executable and Linkable Format), reconnu par les octets magiques \x7FELF à l'offset 0 et un e_type de ET_REL (relocatable, valeur 0x0001).
  • Sur macOS, l'équivalent utilise le format Mach-O, commençant par CF FA ED FE (64 bits little-endian).
  • Sur Windows, le fichier fonctionnellement identique est nommé avec l'extension .obj et utilise le format COFF.

Après la compilation, l'éditeur de liens (ld) combine un ou plusieurs fichiers .o avec des bibliothèques pour produire un exécutable ou une bibliothèque partagée. Plusieurs fichiers .o peuvent également être regroupés dans une archive statique à l'aide de la commande ar.

Les fichiers .o sont des artefacts de construction temporaires générés automatiquement par la chaîne d'outils et ne sont pas destinés à être ouverts par les utilisateurs finaux. Les développeurs qui ont besoin de les inspecter peuvent utiliser nm, objdump ou readelf pour examiner les symboles, les sections et le désassemblage.

Sécurité et sûreté

RISQUE : LOW

Un .o est une donnée de temps de construction, pas quelque chose que le système d'exploitation lance, il présente donc peu de risques directs pour les utilisateurs finaux - vous ne pouvez pas double-cliquer dessus pour l'exécuter. Pour les développeurs, le souci est la confiance dans la chaîne d'approvisionnement : lier un objet provenant d'une source non fiable intègre son code machine directement dans votre programme, ne construisez donc qu'avec des objets/bibliothèques provenant de sources sûres. Les objets de votre propre arborescence de construction peuvent être supprimés sans danger ; ils se régénèrent à la prochaine compilation.

Détails du format

en bref
NOM COMPLETCompiled Object Filealias object file, object code
DÉVELOPPEURUnix lineage; ELF defined by System V ABI / Tool Interface Standard, COFF/Mach-O by Microsoft/Apple. No single vendor.depuis Object-file concept from early Unix (1970s); ELF since System V Release 4 (early 1990s)
TYPE MIMEapplication/x-object
TYPEFichier objet relocalisable compilé (code machine + symboles, pas encore lié)
STANDARDOuvert · libre de droits
OCTETS MAGIQUES · SIGNATURE DE FICHIER
OFFSET
00010203
HEX
7F454C46
ASCII
·ELF
L'extension .o correspond à un rôle, pas à un format d'octet unique. Sur Linux/Unix, un .o est un objet ELF commençant par 7F 45 4C 46 (« \x7FELF ») avec e_type = ET_REL (0x0001, relocalisable). Sur macOS, un .o est un Mach-O, commençant par CF FA ED FE (64 bits LE) ou FE ED FA CF (big-endian). Les objets COFF .obj de Windows n'ont pas de signature magique fixe au début (champ machine, par exemple 64 86 pour x86-64, près du début). Identifiez-les par le conteneur d'objet de la plateforme, et non par une signature universelle.

Programmes qui ouvrent les fichiers O

Windows2 apps
Microsoft Visual Studio Freemium MSVC utilise le format COFF .obj, pas le .o Unix. Un .o Unix ne se construit sur Windows que via WSL/MinGW avec une chaîne d'outils correspondante - ce n'est pas un outil d'ouverture natif.
MinGW-w64 / WSL (gcc, binutils) Open-source Fournit gcc/clang + binutils sur Windows afin que vous puissiez lier et inspecter des fichiers .o de style Unix.
macOS2 apps
Apple Xcode / Clang Gratuit Le clang de Xcode construit et lie des fichiers .o Mach-O. Inspectez avec « nm »/« otool -tv file.o » (installez via « xcode-select --install »).
GCC (Homebrew) Open-source Compilateur alternatif pour construire/lier des fichiers .o ; émet des objets Mach-O sur macOS.
Linux3 apps
GCC / Clang (linker) Open-source Vous n'ouvrez pas un .o - vous le liez : « gcc a.o b.o -o app » produit l'exécutable. Compilez un seul objet avec « gcc -c file.c ».
binutils (nm / objdump / readelf) Open-source « nm file.o » liste les symboles ; « objdump -d file.o » désassemble ; « readelf -a file.o » affiche la structure ELF complète.
Ghidra Open-source Importez le .o pour un désassemblage/décompilation complet lors de l'ingénierie inverse de code compilé.

Détails techniques

spécifications approfondies
Format de conteneurELF sur Linux/Unix, Mach-O sur macOS, COFF sur Windows (où le fichier est généralement nommé `.obj`)
Encodage du fichierBinaire (non lisible par l'homme)
Octets magiques ELF`7F 45 4C 46` (`\x7FELF`) à l'offset 0 - présent dans tous les fichiers objets basés sur ELF
Champ de type d'objet ELF`e_type = ET_REL` (0x0001) dans l'en-tête ELF - distingue un objet relocalisable d'un exécutable (`ET_EXEC`) ou d'une bibliothèque partagée (`ET_DYN`)
Type MIME`application/x-object` ; également transporté comme `application/octet-stream` par les serveurs génériques
Ordre des octetsEncodé dans l'octet `EI_DATA` de l'en-tête ELF : little-endian (`ELFDATA2LSB`) sur x86/x86-64/ARM, big-endian (`ELFDATA2MSB`) sur PowerPC/SPARC
Sections clés`.text` (code exécutable), `.data` (globales initialisées), `.bss` (globales initialisées à zéro), `.rodata` (constantes en lecture seule)
Table des symbolesLa section `.symtab` liste le nom de chaque symbole défini et référencé, sa liaison (locale/globale/faible), son type (fonction/objet) et sa valeur
Entrées de relocalisationLes sections `.rel.text` / `.rela.text` enregistrent chaque emplacement d'adresse que l'éditeur de liens doit corriger lors de la fusion des fichiers objets dans un binaire final
Identification de l'architectureLe champ `e_machine` dans l'en-tête ELF identifie le processeur cible : `EM_X86_64` (0x3E), `EM_AARCH64` (0xB7), `EM_386` (0x03), etc.
Taille typique du fichierDe 1 Ko à plusieurs Mo par unité de traduction, selon la complexité de la source et le niveau d'optimisation du compilateur
CompressionAucune - les fichiers objets sont stockés sous forme de données binaires brutes non compressées
Modèle de compilation un-pour-unExactement un fichier `.o` est émis par unité de traduction source (un par fichier `.c` ou `.cpp`) ; l'éditeur de liens les fusionne ensuite
Conditionnement en bibliothèque statiquePlusieurs fichiers `.o` sont archivés dans une bibliothèque statique `.a` à l'aide de `ar`, qui préserve chaque objet en tant que membre nommé
Résolution au moment du lien uniquementContrairement aux bibliothèques partagées `.so` / `.dylib`, toutes les références de symboles dans un `.o` sont entièrement résolues au moment de l'édition de liens, ne laissant aucune dépendance dynamique à l'exécution
Outils d'inspection`nm` (liste les symboles), `objdump` (désassemblage et vidage de sections), `readelf` (détails de l'en-tête et des sections ELF), `otool` (équivalent Mach-O pour macOS)
PubliéObject-file concept from early Unix (1970s); ELF since System V Release 4 (early 1990s)
Dernière versionELF format frozen since the 1990s; container evolves with each compiler/ABI
Standard ouvertOui · libre de droits
Spécificationrefspecs.linuxfoundation.org

Conversions O

Q&R de la communauté

posées par les utilisateurs
Poser une question rapide
Obtenez de l'aide de personnes qui travaillent avec des fichiers O. Soyez précis - incluez votre système et la version du logiciel.
Aucun compte requis · réponses généralement sous un jour

Pas encore de questions - soyez le premier à poser une question sur les fichiers O.

Foire aux questions

Qu'est-ce qu'un fichier .o ?
Un fichier objet compilé - la sortie en code machine qu'un compilateur produit pour un fichier source avant l'édition de liens. L'éditeur de liens combine plusieurs fichiers .o (plus des bibliothèques) en un exécutable ou une bibliothèque terminés. Sur Windows, le même rôle utilise l'extension .obj.
Comment ouvrir un fichier .o ?
Vous ne l'ouvrez pas comme un document - il est consommé par l'éditeur de liens pendant la construction. Pour l'inspecter, lancez « nm file.o » (symboles), « objdump -d file.o » (désassemblage) ou « readelf -a file.o » (détails ELF) sur Linux/macOS.
Puis-je supprimer les fichiers .o ?
Oui - les fichiers objets sont des artefacts de construction intermédiaires. Les supprimer (ou lancer « make clean ») signifie simplement que le compilateur les régénérera lors de la prochaine construction. Ne les supprimez pas en cours de compilation.
Quelle est la différence entre .o, .a et .so ?
Un .o est un objet compilé unique. Un .a est une bibliothèque statique - une archive de fichiers .o copiés dans votre programme au moment de l'édition de liens. Un .so est une bibliothèque partagée chargée au moment de l'exécution. Tous trois sont construits à partir des mêmes objets.
Un .o est-il identique à un .obj Windows ?
Même rôle (un objet compilé), conteneur différent : le .o Unix est ELF/Mach-O, le .obj Windows est COFF. Ils ne sont pas interchangeables - recompilez la source pour la plateforme cible.
Pourquoi ai-je une « référence non définie » lors de l'édition de liens de mes fichiers .o ?
Un symbole (fonction/variable) utilisé par votre objet n'est défini dans aucun .o ou bibliothèque que vous liez. Ajoutez l'objet/bibliothèque manquant à la commande de lien, ou définissez le symbole. « Définition multiple » est l'inverse - le même symbole présent dans deux objets.

Références

1GNU Binutils - nm/objdump/readelf documentationwww.gnu.org
2Wikipedia - Object fileen.wikipedia.org

Continuer l'exploration

à travers la base de données

Top des extensions cette semaine

1.AQQAQQ Instant Messenger File
2.BINCD/DVD Disc Image (BIN/CUE)
3.CRDOWNLOADChrome Partial Download File
4.PARTPartial Download File
5.RPMSGRestricted Permission Message
6.MDMarkdown Document
7.NOMEDIAAndroid No-Media Marker File
8.PRDXSoftMaker Presentations Document
9.PRO6XProPresenter 6 Bundle File
10.SWFSmall Web Format (Shockwave Flash)

Extensions liées

.DOStata Do-File
.MDMarkdown Document
.HEXIntel HEX File
.XSDXML Schema Definition
.MAPSource Map (JavaScript / CSS)
.CONFIGConfiguration File

Outils de fichiers gratuits

Un identificateur de fichier et un convertisseur d'images dans le navigateur - tout s'exécute sur votre appareil.

Ouvrir la boîte à outils

Parcourir les extensions de fichiers A-Z