.O

O Datei

Compiled Object File
Frage stellen
SCHNELLE ANTWORT

Eine .o-Datei ist die Maschinencode-Ausgabe, die ein Compiler (gcc, clang) für eine einzelne C- oder C++-Quelldatei vor dem Linken erzeugt. Sie kann nicht direkt ausgeführt werden - der Linker kombiniert mehrere .o-Dateien und Bibliotheken zu einer fertigen ausführbaren Datei oder einer Shared Library. Um eine solche Datei zu untersuchen, verwenden Sie nm, objdump oder readelf unter Linux/macOS. Unter Windows wird dieselbe Rolle von .obj-Dateien übernommen.

Entwickler: Unix lineage; ELF defined by System V ABI / Tool Interface Standard, COFF/Mach-O by Microsoft/Apple. No single vendor. Kategorie: Developerdateien Offener Standard MIME: application/x-object
VERFÜGBAR AUF Windows macOS Linux
Verwandt: .DO · .MD · .HEX · .XSD

Auf dieser Seite

19k+ Erweiterungen indexiert
Zuletzt geprüft Aug 17, 2026

Nicht sicher, was Ihre Datei ist?

Legen Sie eine beliebige Datei in unseren Identifikator - wir lesen nur die ersten Bytes, um das Format zu benennen.

Datei identifizieren

Was ist das O-Dateiformat?

Eine .o-Datei ist eine kompilierte Objektdatei - ein binäres Zwischenprodukt, das von einem Compiler wie GCC oder Clang erzeugt wird, wenn er eine einzelne C-Quelldatei in Maschinencode übersetzt. Die Ausgabe enthält Maschinenbefehle, initialisierte und uninitialisierte Datensegmente, eine Symboltabelle und Relokationseinträge, ist aber noch nicht ausführbar: Verweise auf Funktionen und Variablen, die in anderen Übersetzungseinheiten definiert sind, bleiben als ungelöste Platzhalter für den Linker stehen.

Das Binärformat hängt von der Zielplattform ab:

  • Unter Linux und den meisten Unix/BSD-Systemen verwenden .o-Dateien den ELF-Container (Executable and Linkable Format), erkennbar an den Magic Bytes \x7FELF bei Byte-Offset 0 und einem e_type von ET_REL (relokatibel, Wert 0x0001).
  • Auf macOS verwendet das Äquivalent das Mach-O-Format, beginnend mit CF FA ED FE (64-Bit Little-Endian).
  • Unter Windows wird die funktional identische Datei mit der Erweiterung .obj benannt und verwendet das COFF-Format.

Nach der Kompilierung kombiniert der Linker (ld) eine oder mehrere .o-Dateien mit Bibliotheken, um eine ausführbare Datei oder eine Shared Library zu erstellen. Mehrere .o-Dateien können auch mit dem Befehl ar zu einem statischen Archiv gebündelt werden.

.o-Dateien sind temporäre Build-Artefakte, die automatisch von der Toolchain generiert werden und nicht dazu gedacht sind, von Endbenutzern geöffnet zu werden. Entwickler, die sie untersuchen müssen, können nm, objdump oder readelf verwenden, um Symbole, Sektionen und Disassembly zu prüfen.

Sicherheit

RISIKO: LOW

Eine .o-Datei besteht aus Build-Daten, nicht aus etwas, das das Betriebssystem startet. Daher stellt sie für Endbenutzer kaum ein direktes Risiko dar - man kann sie nicht per Doppelklick ausführen. Für Entwickler besteht das Risiko im Vertrauen in die Lieferkette: Das Verlinken eines Objekts aus einer nicht vertrauenswürdigen Quelle backt dessen Maschinencode direkt in Ihr Programm ein. Bauen Sie daher nur mit Objekten/Bibliotheken aus Quellen, denen Sie vertrauen. Die Objekte in Ihrem eigenen Build-Verzeichnis können sicher gelöscht werden; sie werden beim nächsten Kompilieren neu generiert.

Formatdetails

kurz gefasst
VOLLSTÄNDIGER NAMECompiled Object Filealias object file, object code
ENTWICKLERUnix lineage; ELF defined by System V ABI / Tool Interface Standard, COFF/Mach-O by Microsoft/Apple. No single vendor.seit Object-file concept from early Unix (1970s); ELF since System V Release 4 (early 1990s)
MIME TYPEapplication/x-object
TYPKompilierte relokatible Objektdatei (Maschinencode + Symbole, noch nicht verlinkt)
STANDARDOffen · lizenzfrei
MAGIC BYTES · DATEISIGNATUR
OFFSET
00010203
HEX
7F454C46
ASCII
·ELF
Die Erweiterung .o beschreibt eine Rolle, kein einheitliches Byte-Format. Unter Linux/Unix ist eine .o-Datei ein ELF-Objekt, das mit 7F 45 4C 46 („\x7FELF“) beginnt und e_type = ET_REL (0x0001, relokatibel) aufweist. Auf macOS ist eine .o-Datei Mach-O, beginnend mit CF FA ED FE (64-Bit LE) oder FE ED FA CF (Big-Endian). Windows COFF .obj-Objekte haben keine feste führende Magic-Zahl (Maschinenfeld, z. B. 64 86 für x86-64, nahe dem Anfang). Identifizieren Sie die Datei über den Objekt-Container der Plattform, nicht über eine universelle Signatur.

Programme zum Öffnen von O-Dateien

Windows2 apps
Microsoft Visual Studio Freemium MSVC verwendet COFF .obj, nicht Unix .o. Eine Unix .o-Datei lässt sich unter Windows nur via WSL/MinGW mit einer passenden Toolchain verarbeiten - es gibt keinen nativen Viewer.
MinGW-w64 / WSL (gcc, binutils) Open Source Stellt gcc/clang + binutils unter Windows bereit, sodass Sie .o-Dateien im Unix-Stil verlinken und untersuchen können.
macOS2 apps
Apple Xcode / Clang Kostenlos Der Clang-Compiler von Xcode erstellt und verlinkt Mach-O .o-Dateien. Untersuchen Sie diese mit „nm“ oder „otool -tv datei.o“ (Installation über „xcode-select --install“).
GCC (Homebrew) Open Source Alternativer Compiler zum Erstellen/Verlinken von .o-Dateien; gibt Mach-O-Objekte auf macOS aus.
Linux3 apps
GCC / Clang (linker) Open Source Man öffnet eine .o-Datei nicht - man verlinkt sie: „gcc a.o b.o -o app“ erzeugt die ausführbare Datei. Kompilieren Sie ein einzelnes Objekt mit „gcc -c datei.c“.
binutils (nm / objdump / readelf) Open Source „nm datei.o“ listet Symbole auf; „objdump -d datei.o“ disassembliert; „readelf -a datei.o“ zeigt die vollständige ELF-Struktur.
Ghidra Open Source Importieren Sie die .o-Datei für eine vollständige Disassembly/Dekompilierung beim Reverse-Engineering von kompiliertem Code.

Technische Details

technische Spezifikation
Container-FormatELF unter Linux/Unix, Mach-O unter macOS, COFF unter Windows (wo die Datei normalerweise `.obj` genannt wird)
DateikodierungBinär (kein menschenlesbarer Text)
ELF Magic Bytes`7F 45 4C 46` (`\x7FELF`) bei Byte-Offset 0 - vorhanden in allen ELF-basierten Objektdateien
ELF-Objekttyp-Feld`e_type = ET_REL` (0x0001) im ELF-Header - unterscheidet ein relokatibles Objekt von einer ausführbaren Datei (`ET_EXEC`) oder einer Shared Library (`ET_DYN`)
MIME-Typ`application/x-object`; wird von generischen Servern auch als `application/octet-stream` übertragen
Byte-ReihenfolgeKodiert im `EI_DATA`-Byte des ELF-Headers: Little-Endian (`ELFDATA2LSB`) auf x86/x86-64/ARM, Big-Endian (`ELFDATA2MSB`) auf PowerPC/SPARC
Wichtige Sektionen`.text` (ausführbarer Code), `.data` (initialisierte globale Variablen), `.bss` (mit Null initialisierte globale Variablen), `.rodata` (schreibgeschützte Konstanten)
SymboltabelleDie Sektion `.symtab` listet Name, Bindung (lokal/global/schwach), Typ (Funktion/Objekt) und Wert jedes definierten und referenzierten Symbols auf
RelokationseinträgeDie Sektionen `.rel.text` / `.rela.text` protokollieren jede Adressstelle, die der Linker beim Zusammenführen von Objektdateien in eine finale Binärdatei anpassen muss
Architektur-IdentifizierungDas Feld `e_machine` im ELF-Header identifiziert das CPU-Ziel: `EM_X86_64` (0x3E), `EM_AARCH64` (0xB7), `EM_386` (0x03), etc.
Typische Dateigröße1 KB bis mehrere MB pro Übersetzungseinheit, abhängig von der Komplexität des Quellcodes und der Optimierungsstufe des Compilers
KompressionKeine - Objektdateien werden als rohe, unkomprimierte Binärdaten gespeichert
Eins-zu-eins-KompilierungsmodellGenau eine `.o`-Datei wird pro Quell-Übersetzungseinheit (eine pro `.c`- oder `.cpp`-Datei) ausgegeben; der Linker führt diese später zusammen
Paketierung in statische BibliothekenMehrere `.o`-Dateien werden mit `ar` in einer statischen `.a`-Bibliothek archiviert, wobei jedes Objekt als benanntes Mitglied erhalten bleibt
Auflösung nur zur Link-ZeitIm Gegensatz zu `.so` / `.dylib` Shared Libraries werden alle Symbolreferenzen in einer `.o`-Datei vollständig zur Link-Zeit aufgelöst, sodass keine dynamischen Abhängigkeiten zur Laufzeit verbleiben
Werkzeuge zur Untersuchung`nm` (Symbole auflisten), `objdump` (Disassembly und Sektions-Dumps), `readelf` (ELF-Header und Sektionsdetails), `otool` (macOS Mach-O Äquivalent)
VeröffentlichtObject-file concept from early Unix (1970s); ELF since System V Release 4 (early 1990s)
Neueste VersionELF format frozen since the 1990s; container evolves with each compiler/ABI
Offener StandardJa · lizenzgebührenfrei
Spezifikationrefspecs.linuxfoundation.org

O-Konvertierungen

Community Q&A

von Nutzern gefragt
Schnelle Frage stellen
Holen Sie sich Hilfe von Menschen, die mit O-Dateien arbeiten. Seien Sie konkret - geben Sie Ihr System und die Softwareversion an.
Kein Konto erforderlich · Antworten meist innerhalb eines Tages

Noch keine Fragen - stellen Sie die erste Frage zu O-Dateien.

Häufig gestellte Fragen

Was ist eine .o-Datei?
Eine kompilierte Objektdatei - die Maschinencode-Ausgabe, die ein Compiler für eine Quelldatei vor dem Linken erzeugt. Der Linker kombiniert mehrere .o-Dateien (plus Bibliotheken) zu einer fertigen ausführbaren Datei oder Bibliothek. Unter Windows wird für dieselbe Rolle die Erweiterung .obj verwendet.
Wie öffne ich eine .o-Datei?
Man öffnet sie nicht wie ein Dokument - sie wird vom Linker während eines Builds verarbeitet. Um sie zu untersuchen, führen Sie unter Linux/macOS „nm datei.o“ (Symbole), „objdump -d datei.o“ (Disassembly) oder „readelf -a datei.o“ (ELF-Details) aus.
Kann ich .o-Dateien löschen?
Ja - Objektdateien sind Zwischenprodukte des Builds. Das Löschen (oder Ausführen von „make clean“) bedeutet lediglich, dass der Compiler sie beim nächsten Build neu generiert. Löschen Sie diese nicht während eines laufenden Build-Vorgangs.
Was ist der Unterschied zwischen .o, .a und .so?
Eine .o-Datei ist ein einzelnes kompiliertes Objekt. Eine .a-Datei ist eine statische Bibliothek - ein Archiv aus .o-Dateien, die zum Link-Zeitpunkt in Ihr Programm kopiert werden. Eine .so-Datei ist eine Shared Library, die zur Laufzeit geladen wird. Alle drei werden aus denselben Objekten erstellt.
Ist eine .o-Datei dasselbe wie eine Windows .obj-Datei?
Dieselbe Rolle (ein kompiliertes Objekt), aber ein anderer Container: Unix .o ist ELF/Mach-O, Windows .obj ist COFF. Sie sind nicht austauschbar - kompilieren Sie den Quellcode für die Zielplattform neu.
Warum erhalte ich beim Linken meiner .o-Dateien die Meldung „undefined reference“?
Ein Symbol (Funktion/Variable), das Ihr Objekt verwendet, ist in keiner der .o-Dateien oder Bibliotheken definiert, die Sie verlinken. Fügen Sie das fehlende Objekt/die Bibliothek zum Link-Befehl hinzu oder definieren Sie das Symbol. „multiple definition“ ist das Gegenteil - dasselbe Symbol in zwei Objekten.

Quellen

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

Weiter entdecken

in der Datenbank

Top-Erweiterungen dieser Woche

1.AQQAQQ Instant Messenger File
2.CRDOWNLOADChrome Partial Download File
3.MDMarkdown Document
4.BINCD/DVD Disc Image (BIN/CUE)
5.PARTPartial Download File
6.RPMSGRestricted Permission Message
7.NOMEDIAAndroid No-Media Marker File
8.EXEWindows Executable (Portable Executable)
9.AVIFAV1 Image File Format (AVIF)
10.ICSiCalendar data file

Verwandte Erweiterungen

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

Kostenlose Datei-Tools

Ein Browser-Dateiidentifikator und Bildkonverter - alles läuft auf Ihrem Gerät.

Toolbox öffnen

Dateierweiterungen A-Z durchsuchen