Vad är en objektfil?
En objektfil är en datorfil som genereras av ett program som kallas en kompilator och innehåller såväl data som instruktioner. Kompilatorer översätter programmeringsspråkkällkoden till en mellanläsbar maskinläsbar form känd som objektkod. Mindre program kan sammanställas i en enda objektfil, medan större program vanligtvis sammanställs i flera filer med relaterad funktion. Dessa enskilda objektfiler förenas av en länkare och operativsystemspecifik information läggs till för att bilda ett körbart program.
I vanligt bruk benämns en objektfil en ".obj" -filtillägg. Det finns dock flera olika format för dessa filer. Det vanligaste är Intel® Relocatable Object Module Format (OMF) och Common Object File Format (COFF) för Windows® och UNIX® System V. I många INIX®-system har det körbara och länkbara formatet (ELF) kommit till byt ut COFF.
Oavsett format innehåller en objektfil vanligtvis tre typer av information som gör att den kan interagera med andra programmoduler. Procedurer och data som är öppna för extern referens tilldelas namn med vilka de kan anropas från andra moduler. På samma sätt noteras referenser till information utanför modulen men tilldelas inte ett namn. När filerna är länkade kommer de namngivna referenserna att tilldelas namnet som ges dem i modulen där de ursprungligen definierades. Lokala namn används för instruktioner och data som enbart hänvisas till i en modul.
Inte all länkbar kod lagras som objektfiler. Bibliotek är samlingar av förkompilerade rutiner som lagras som objektkod. De produceras på ungefär samma sätt som objektfiler och är användbara för att lagra ofta kallade procedurer. När en länkare inte hittar en referens inom andra objektfiler söker den automatiskt efter den i en biblioteksfil. De flesta implementeringar av ett programmeringsspråk har ett standardbibliotek med funktioner.
Med hjälp av dynamisk länkning kan en objektfil användas samtidigt av flera exekverande program. I stället för att binda objektkod till ett program när det är länkat, är det att det hämtas när programmet laddas eller vid körning när en procedur hänvisas. I Windows®-miljön är dessa kända som dynamiska länkbibliotek och betecknas med en .dll-förlängning. System som liknar Unix® benämner ofta denna filtyp som ett dynamiskt delat objekt (DSO). Denna typ av objektfil kan också implementeras för användning med ett visst program och skulle vara en del av programmets installation.