.O

O-fil

Compiled Object File
Ställ en fråga
SNABBT SVAR

En .o-fil är den maskinkodsutdata som en kompilator (gcc, clang) producerar för en C- eller C++-källfil före länkning. Du kan inte köra den direkt - länkaren kombinerar flera .o-filer och bibliotek till en färdig körbar fil eller ett delat bibliotek. För att inspektera en, använd nm, objdump eller readelf på Linux/macOS. På Windows täcks samma roll av .obj-filer.

Utvecklare: Unix lineage; ELF defined by System V ABI / Tool Interface Standard, COFF/Mach-O by Microsoft/Apple. No single vendor. Kategori: Utvecklarfiler Öppen standard MIME: application/x-object
ÖPPNAS PÅ Windows macOS Linux
Relaterat: .DO · .MD · .HEX · .XSD

På denna sida

19k+ filtillägg indexerade
Senast granskad Aug 17, 2026

Osäker på vad din fil är?

Släpp valfri fil i vår identifierare - vi läser bara de första byten för att namnge formatet.

Identifiera en fil

Vad är filformatet O?

En .o-fil är en kompilerad objektfil - en mellanliggande binärfil som produceras av en kompilator som GCC eller Clang när den översätter en enskild C-källfil till maskinkod. Utdata innehåller maskininstruktioner, initierade och oinitierade datasegment, en symboltabell och relokeringsposter, men den är ännu inte körbar: referenser till funktioner och variabler som definierats i andra översättningsenheter lämnas som oavlösta platshållare för länkaren.

Det binära formatet beror på målplattformen:

  • På Linux och de flesta Unix/BSD-system använder .o-filer containern ELF (Executable and Linkable Format), som känns igen på de magiska byten \x7FELF vid byte-offset 0 och en e_type av ET_REL (relokerbar, värde 0x0001).
  • På macOS använder motsvarigheten formatet Mach-O, som börjar med CF FA ED FE (64-bitars little-endian).
  • På Windows kallas den funktionellt identiska filen med filtillägget .obj och använder formatet COFF.

Efter kompilering kombinerar länkaren (ld) en eller flera .o-filer med bibliotek för att skapa en körbar fil eller ett delat bibliotek. Flera .o-filer kan också buntas ihop till ett statiskt arkiv med kommandot ar.

.o-filer är tillfälliga byggartefakter som genereras automatiskt av verktygskedjan och är inte avsedda att öppnas av slutanvändare. Utvecklare som behöver inspektera dem kan använda nm, objdump eller readelf för att undersöka symboler, sektioner och disassemblering.

Säkerhet & trygghet

RISK: LOW

En .o-fil är data från byggprocessen, inte något som operativsystemet startar, så den utgör liten direkt risk för slutanvändare - du kan inte dubbelklicka och köra den. För utvecklare är oron förtroende för leveranskedjan: att länka ett objekt från en okänd källa bakar in dess maskinkod direkt i ditt program, så bygg endast med objekt/bibliotek från källor du litar på. Objekten i ditt eget bygge är säkra att radera; de återskapas vid nästa kompilering.

Formatdetaljer

i ett nötskal
FULLSTÄNDIGT NAMNCompiled Object Fileäven känd som object file, object code
UTVECKLAREUnix lineage; ELF defined by System V ABI / Tool Interface Standard, COFF/Mach-O by Microsoft/Apple. No single vendor.sedan Object-file concept from early Unix (1970s); ELF since System V Release 4 (early 1990s)
MIME-TYPapplication/x-object
TYPKompilerad relokerbar objektfil (maskinkod + symboler, ännu ej länkad)
STANDARDÖppen · royaltyfri
MAGIC BYTES · FILSIGNATUR
OFFSET
00010203
HEX
7F454C46
ASCII
·ELF
Filtillägget .o är en roll, inte ett enskilt byteformat. På Linux/Unix är en .o ett ELF-objekt som börjar med 7F 45 4C 46 («\x7FELF») med e_type = ET_REL (0x0001, relokerbar). På macOS är en .o Mach-O, som börjar med CF FA ED FE (64-bitars LE) eller FE ED FA CF (big-endian). Windows COFF .obj-objekt har ingen fast inledande magi (maskinfält, t.ex. 64 86 för x86-64, nära början). Identifiera genom plattformens objektcontainer, inte en universell signatur.

Program som öppnar O-filer

Windows2 apps
Microsoft Visual Studio Freemium MSVC använder COFF .obj, inte Unix .o. En Unix .o kan endast byggas på Windows via WSL/MinGW med en matchande verktygskedja - det är inte en infödd öppnare.
MinGW-w64 / WSL (gcc, binutils) Öppen källkod Tillhandahåller gcc/clang + binutils på Windows så att du kan länka och inspektera Unix-liknande .o-filer.
macOS2 apps
Apple Xcode / Clang Gratis Xcodes clang bygger och länkar Mach-O .o-filer. Inspektera med «nm»/«otool -tv fil.o» (installera via «xcode-select --install»).
GCC (Homebrew) Öppen källkod Alternativ kompilator för att bygga/länka .o-filer; skapar Mach-O-objekt på macOS.
Linux3 apps
GCC / Clang (linker) Öppen källkod Du öppnar inte en .o - du länkar den: «gcc a.o b.o -o app» producerar den körbara filen. Kompilera ett enskilt objekt med «gcc -c fil.c».
binutils (nm / objdump / readelf) Öppen källkod «nm fil.o» listar symboler; «objdump -d fil.o» disassemblerar; «readelf -a fil.o» visar hela ELF-strukturen.
Ghidra Öppen källkod Importera .o-filen för fullständig disassemblering/dekompilering vid reverse-engineering av kompilerad kod.

Tekniska detaljer

djup specifikation
ContainerformatELF på Linux/Unix, Mach-O på macOS, COFF på Windows (där filen vanligtvis heter `.obj`)
FilkodningBinär (ej läsbar text)
ELF magiska byte`7F 45 4C 46` (`\x7FELF`) vid byte-offset 0 - finns i alla ELF-baserade objektfiler
ELF objekttyp-fält`e_type = ET_REL` (0x0001) i ELF-headern - skiljer ett relokerbart objekt från en körbar fil (`ET_EXEC`) eller ett delat bibliotek (`ET_DYN`)
MIME-typ`application/x-object`; hanteras även som `application/octet-stream` av generiska servrar
Byte-ordningKodad i `EI_DATA`-byten i ELF-headern: little-endian (`ELFDATA2LSB`) på x86/x86-64/ARM, big-endian (`ELFDATA2MSB`) på PowerPC/SPARC
Nyckelsektioner`.text` (körbar kod), `.data` (initierade globala variabler), `.bss` (noll-initierade globala variabler), `.rodata` (skrivskyddade konstanter)
SymboltabellSektionen `.symtab` listar varje definierad och refererad symbols namn, bindning (lokal/global/svag), typ (funktion/objekt) och värde
RelokeringsposterSektionerna `.rel.text` / `.rela.text` registrerar varje adressplats som länkaren måste korrigera när objektfiler slås samman till en slutgiltig binärfil
ArkitekturidentifieringFältet `e_machine` i ELF-headern identifierar mål-CPU: `EM_X86_64` (0x3E), `EM_AARCH64` (0xB7), `EM_386` (0x03), etc.
Typisk filstorlek1 KB till flera MB per översättningsenhet, beroende på källkodens komplexitet och kompilatorns optimeringsnivå
KomprimeringIngen - objektfiler lagras som rå okomprimerad binärdata
En-till-en kompileringsmodellExakt en `.o`-fil skapas per källöversättningsenhet (en per `.c`- eller `.cpp`-fil); länkaren slår senare samman dem
Paketering i statiska bibliotekFlera `.o`-filer arkiveras i ett statiskt bibliotek av typen `.a` med hjälp av `ar`, vilket bevarar varje objekt som en namngiven medlem
Endast upplösning vid länkningTill skillnad från delade bibliotek som `.so` / `.dylib`, löses alla symbolreferenser i en `.o` helt vid länkningstillfället, vilket inte lämnar några dynamiska beroenden vid körning
Inspektionsverktyg`nm` (lista symboler), `objdump` (disassemblering och sektionsdumpar), `readelf` (ELF-header och sektionsdetaljer), `otool` (motsvarighet för macOS Mach-O)
SläpptObject-file concept from early Unix (1970s); ELF since System V Release 4 (early 1990s)
Senaste versionELF format frozen since the 1990s; container evolves with each compiler/ABI
Öppen standardJa · royaltyfri
Specifikationrefspecs.linuxfoundation.org

O-konverteringar

Frågor & svar

frågat av användare
Ställ en snabb fråga
Få hjälp från personer som arbetar med O-filer. Var specifik - inkludera ditt system och programversion.
Inget konto behövs · svar vanligtvis inom en dag

Inga frågor än - bli den första att fråga om O-filer.

Vanliga frågor

Vad är en .o-fil?
En kompilerad objektfil - den maskinkodsutdata en kompilator producerar för en källfil före länkning. Länkaren kombinerar flera .o-filer (plus bibliotek) till en färdig körbar fil eller ett bibliotek. På Windows används filtillägget .obj för samma roll.
Hur öppnar jag en .o-fil?
Du öppnar den inte som ett dokument - den konsumeras av länkaren under ett bygge. För att inspektera den, kör «nm fil.o» (symboler), «objdump -d fil.o» (disassemblering) eller «readelf -a fil.o» (ELF-detaljer) på Linux/macOS.
Kan jag radera .o-filer?
Ja - objektfiler är mellanliggande byggartefakter. Att radera dem (eller köra «make clean») innebär bara att kompilatorn återskapar dem vid nästa bygge. Radera dem inte mitt under ett pågående bygge.
Vad är skillnaden mellan .o, .a och .so?
En .o är ett enskilt kompilerat objekt. En .a är ett statiskt bibliotek - ett arkiv med .o-filer som kopieras in i ditt program vid länkning. En .so är ett delat bibliotek som laddas vid körning. Alla tre är byggda från samma objekt.
Är en .o samma sak som en Windows .obj?
Samma roll (ett kompilerat objekt), men olika containrar: Unix .o är ELF/Mach-O, Windows .obj är COFF. De är inte utbytbara - kompilera om källkoden för målplattformen.
Varför får jag «undefined reference» när jag länkar mina .o-filer?
En symbol (funktion/variabel) som ditt objekt använder finns inte definierad i någon .o eller något bibliotek du länkar. Lägg till det saknade objektet/biblioteket i länkningskommandot, eller definiera symbolen. «multiple definition» är motsatsen - samma symbol finns i två objekt.

Referenser

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

Fortsätt utforska

genom databasen

Populära filtillägg denna vecka

1.AQQAQQ Instant Messenger File
2.CRDOWNLOADChrome Partial Download File
3.JPGJPEG Image
4.DATProgram Data File (generic)
5.EXEWindows Executable (Portable Executable)
6.RPMSGRestricted Permission Message
7.PARTPartial Download File
8.BINCD/DVD Disc Image (BIN/CUE)
9.DBSQLite Database File
10.JSONJavaScript Object Notation file

Relaterade filtillägg

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

Gratis filverktyg

En filidentifierare och bildkonverterare direkt i webbläsaren - allt körs på din enhet.

Öppna verktygslådan

Bläddra bland filtillägg A-Ö