.O

O-fil

Compiled Object File
Still et spørsmål
HURTIGSVAR

En .o-fil er maskinkode-utdataen en kompilator (gcc, clang) produserer for én C- eller C++-kildefil før lenking. Du kan ikke kjøre den direkte - lenkeren kombinerer flere .o-filer og biblioteker til en ferdig kjørbar fil eller et delt bibliotek. For å inspisere en, bruk nm, objdump eller readelf på Linux/macOS. På Windows dekkes samme rolle av .obj-filer.

Utvikler: Unix lineage; ELF defined by System V ABI / Tool Interface Standard, COFF/Mach-O by Microsoft/Apple. No single vendor. Kategori: Utviklerfiler Åpen standard MIME: application/x-object
ÅPNES PÅ Windows macOS Linux
Relatert: .DO · .MD · .HEX · .XSD

På denne siden

19k+ filendelser indeksert
Sist vurdert Aug 17, 2026

Usikker på hva filen din er?

Slipp hvilken som helst fil inn i vår identifikator - vi leser bare de første bytene for å navngi formatet.

Identifiser en fil

Hva er O-filformatet?

En .o-fil er en kompilert objektfil - et mellomliggende binærformat produsert av en kompilator som GCC eller Clang når den oversetter en enkelt C-kildefil til maskinkode. Utdataen inneholder maskininstruksjoner, initialiserte og uinitialiserte datasegmenter, en symboltabell og relokeringsposter, men den er ennå ikke kjørbar: referanser til funksjoner og variabler definert i andre oversettelsesenheter er etterlatt som uoppklarte plassholdere for lenkeren.

Det binære formatet avhenger av målplattformen:

  • På Linux og de fleste Unix/BSD-systemer bruker .o-filer ELF-beholderen (Executable and Linkable Format), gjenkjent av de magiske bytene \x7FELF ved byte-offset 0 og en e_typeET_REL (relokerbar, verdi 0x0001).
  • På macOS bruker tilsvarende fil Mach-O-formatet, som begynner med CF FA ED FE (64-bit little-endian).
  • På Windows kalles den funksjonelt identiske filen med filendelsen .obj og bruker COFF-formatet.

Etter kompilering kombinerer lenkeren (ld) én eller flere .o-filer med biblioteker for å produsere en kjørbar fil eller et delt bibliotek. Flere .o-filer kan også buntes sammen til et statisk arkiv ved hjelp av kommandoen ar.

.o-filer er midlertidige bygg-artefakter generert automatisk av verktøykjeden og er ikke ment å åpnes av sluttbrukere. Utviklere som trenger å inspisere dem kan bruke nm, objdump eller readelf for å undersøke symboler, seksjoner og disassemblering.

Sikkerhet og trygghet

RISIKO: LOW

En .o-fil er data fra byggetid, ikke noe operativsystemet starter, så den utgjør liten direkte risiko for sluttbrukere - du kan ikke dobbeltklikke og kjøre den. For utviklere er bekymringen tillit til forsyningskjeden: å lenke et objekt fra en utroverdig kilde baker maskinkoden dens rett inn i programmet ditt, så bygg bare med objekter/biblioteker fra kilder du stoler på. Objektene i ditt eget bygg-tre er trygge å slette; de regenereres ved neste kompilering.

Formatdetaljer

i et nøtteskall
FULLT NAVNCompiled Object Fileogså kjent som object file, object code
UTVIKLERUnix lineage; ELF defined by System V ABI / Tool Interface Standard, COFF/Mach-O by Microsoft/Apple. No single vendor.siden Object-file concept from early Unix (1970s); ELF since System V Release 4 (early 1990s)
MIME-TYPEapplication/x-object
TYPEKompilert relokerbar objektfil (maskinkode + symboler, ennå ikke lenket)
STANDARDÅpen · royalty-fri
MAGIC BYTES · FILSIGNATUR
OFFSET
00010203
HEX
7F454C46
ASCII
·ELF
Filendelsen .o er en rolle, ikke et enkelt byteformat. På Linux/Unix er en .o et ELF-objekt som begynner med 7F 45 4C 46 («\x7FELF») med e_type = ET_REL (0x0001, relokerbar). På macOS er en .o Mach-O, som starter med CF FA ED FE (64-bit LE) eller FE ED FA CF (big-endian). Windows COFF .obj-objekter har ingen fast ledende magi (maskinfelt, f.eks. 64 86 for x86-64, nær starten). Identifiser ved plattformens objektbeholder, ikke én universell signatur.

Programmer som åpner O-filer

Windows2 apps
Microsoft Visual Studio Freemium MSVC bruker COFF .obj, ikke Unix .o. En Unix .o kan bare bygges på Windows via WSL/MinGW med en samsvarende verktøykjede - det er ikke en innfødt åpner.
MinGW-w64 / WSL (gcc, binutils) Åpen kildekode Tilbyr gcc/clang + binutils på Windows slik at du kan lenke og inspisere Unix-stil .o-filer.
macOS2 apps
Apple Xcode / Clang Gratis Xcodes clang bygger og lenker Mach-O .o-filer. Inspiser med «nm»/«otool -tv file.o» (installer via «xcode-select --install»).
GCC (Homebrew) Åpen kildekode Alternativ kompilator for å bygge/lenke .o-filer; produserer Mach-O-objekter på macOS.
Linux3 apps
GCC / Clang (linker) Åpen kildekode Du åpner ikke en .o - du lenker den: «gcc a.o b.o -o app» produserer den kjørbare filen. Kompiler et enkelt objekt med «gcc -c file.c».
binutils (nm / objdump / readelf) Åpen kildekode «nm file.o» lister symboler; «objdump -d file.o» disassemblerer; «readelf -a file.o» viser hele ELF-strukturen.
Ghidra Åpen kildekode Importer .o-filen for full disassemblering/dekompilering ved reverse-engineering av kompilert kode.

Tekniske detaljer

dyp spesifikasjon
BeholderformatELF på Linux/Unix, Mach-O på macOS, COFF på Windows (hvor filen vanligvis heter `.obj`)
FilkodingBinær (ikke menneskelig lesbar tekst)
ELF magiske byte`7F 45 4C 46` (`\x7FELF`) ved byte-offset 0 - til stede i alle ELF-baserte objektfiler
ELF objekttype-felt`e_type = ET_REL` (0x0001) i ELF-headeren - skiller et relokerbart objekt fra en kjørbar fil (`ET_EXEC`) eller et delt bibliotek (`ET_DYN`)
MIME-type`application/x-object`; også overført som `application/octet-stream` av generiske servere
ByterekkefølgeKodet i `EI_DATA`-byten i ELF-headeren: little-endian (`ELFDATA2LSB`) på x86/x86-64/ARM, big-endian (`ELFDATA2MSB`) på PowerPC/SPARC
Nokkelseksjoner`.text` (kjørbar kode), `.data` (initialiserte globaler), `.bss` (null-initialiserte globaler), `.rodata` (skrivebeskyttede konstanter)
Symboltabell`.symtab`-seksjonen lister hvert definerte og refererte symbols navn, binding (lokal/global/svak), type (funksjon/objekt) og verdi
Relokeringsposter`.rel.text` / `.rela.text`-seksjoner registrerer hver adresseplass lenkeren må patche når objektfiler slås sammen til en endelig binærfil
Arkitekturidentifikasjon`e_machine`-feltet i ELF-headeren identifiserer CPU-målet: `EM_X86_64` (0x3E), `EM_AARCH64` (0xB7), `EM_386` (0x03), osv.
Typisk filstørrelse1 KB til flere MB per oversettelsesenhet, avhengig av kildens kompleksitet og kompilatorens optimaliseringsnivå
KomprimeringIngen - objektfiler lagres som rå ukomprimerte binærdata
En-til-en kompileringsmodellNøyaktig én `.o`-fil sendes ut per kildeoversettelsesenhet (én per `.c`- eller `.cpp`-fil); lenkeren slår dem sammen senere
Statisk bibliotek-pakkingFlere `.o`-filer arkiveres i et `.a` statisk bibliotek ved hjelp av `ar`, som bevarer hvert objekt som et navngitt medlem
Kun oppløsning ved lenketidI motsetning til `.so` / `.dylib` delte biblioteker, blir alle symbolreferanser i en `.o` løst fullstendig ved lenketid, uten kjøretidsavhengigheter
Inspeksjonsverktøy`nm` (liste symboler), `objdump` (disassemblering og seksjonsdump), `readelf` (ELF-header og seksjonsdetaljer), `otool` (macOS Mach-O-ekvivalent)
UtgittObject-file concept from early Unix (1970s); ELF since System V Release 4 (early 1990s)
Siste versjonELF format frozen since the 1990s; container evolves with each compiler/ABI
Åpen standardJa · royalty-fri
Spesifikasjonrefspecs.linuxfoundation.org

O-konverteringer

Spørsmål og svar fra fellesskapet

spurt av brukere
Still et raskt spørsmål
Få hjelp fra folk som jobber med O-filer. Vær spesifikk - inkluder systemet ditt og programvareversjon.
Ingen konto nødvendig · svar vanligvis innen en dag

Ingen spørsmål ennå - vær den første til å spørre om O-filer.

Ofte stilte spørsmål

Hva er en .o-fil?
En kompilert objektfil - maskinkode-utdataen en kompilator produserer for én kildefil før lenking. Lenkeren kombinerer flere .o-filer (pluss biblioteker) til en ferdig kjørbar fil eller et bibliotek. På Windows brukes filendelsen .obj for samme rolle.
Hvordan åpner jeg en .o-fil?
Du åpner den ikke som et dokument - den forbrukes av lenkeren under bygging. For å inspisere den, kjør «nm file.o» (symboler), «objdump -d file.o» (disassemblering) eller «readelf -a file.o» (ELF-detaljer) på Linux/macOS.
Kan jeg slette .o-filer?
Ja - objektfiler er mellomliggende bygg-artefakter. Å slette dem (eller kjøre «make clean») betyr bare at kompilatoren genererer dem på nytt ved neste bygging. Ikke slett dem midt under en bygging.
Hva er forskjellen mellom .o, .a og .so?
En .o er et enkelt kompilert objekt. En .a er et statisk bibliotek - et arkiv med .o-filer som kopieres inn i programmet ditt ved lenking. En .so er et delt bibliotek som lastes ved kjøretid. Alle tre er bygget fra de samme objektene.
Er en .o det samme som en Windows .obj?
Samme rolle (et kompilert objekt), men ulik beholder: Unix .o er ELF/Mach-O, Windows .obj er COFF. De er ikke utskiftbare - kompiler kildekoden på nytt for målplattformen.
Hvorfor får jeg «undefined reference» når jeg lenker .o-filene mine?
Et symbol (funksjon/variabel) objektet ditt bruker er ikke definert i noen av .o-filene eller bibliotekene du lenker. Legg til det manglende objektet/biblioteket i lenkekommandoen, eller definer symbolet. «multiple definition» er det motsatte - samme symbol finnes i to objekter.

Referanser

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

Utforsk videre

på tvers av databasen

Populære filendelser denne uken

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)

Relaterte filendelser

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

Gratis filverktøy

En filidentifikator og bildekonvertering i nettleseren - alt kjører på din enhet.

Åpne verktøykassen

Bla i filendelser A-Å