Hva er en objektfil?
En objektfil er en datafil generert av et program som kalles en kompilator og inneholder både data og instruksjoner. Kompilatorer oversetter programmeringsspråk kildekode til en mellomliggende maskinlesbar form kjent som objektkode. Mindre programmer kan samles i en enkelt objektfil, mens større programmer vanligvis settes sammen til flere filer med relatert funksjon. Disse individuelle objektfilene blir samlet av en linker, og operativsystemspesifikk informasjon blir lagt til for å danne et kjørbart program.
I vanlig praksis betegnes en objektfil med en ".obj" -filtypen. Det er imidlertid flere forskjellige formater for disse filene. Det vanligste er Intel® Relocatable Object Module Format (OMF), og Common Object File Format (COFF) for Windows® og UNIX® System V. I mange INIX®-systemer har det kjørbare og koblbare formatet (ELF) kommet til erstatte COFF.
Uansett format inneholder en objektfil typisk tre typer informasjon som lar den samhandle med andre programmoduler. Prosedyrer og data som er åpne for ekstern referanse, tildeles navn som de kan kalles fra andre moduler. Tilsvarende blir referanser til informasjon utenfor modulen notert, men ikke tildelt et navn. Når filene er koblet, vil de navngitte referansene bli tildelt navnet gitt dem i modulen der de opprinnelig ble definert. Lokale navn brukes for instruksjoner og data som det kun refereres til i en modul.
Ikke all koblbar kode er lagret som objektfiler. Biblioteker er samlinger av forhåndskompilerte rutiner som er lagret som objektkode. De er produsert på omtrent samme måte som objektfiler og er nyttige for lagring av ofte kalte prosedyrer. Når en lenker ikke finner en referanse i andre objektfiler, vil den automatisk søke etter den i en bibliotekfil. De fleste implementeringer av et programmeringsspråk har et standard bibliotek med funksjoner.
Ved hjelp av dynamisk kobling kan en objektfil brukes samtidig av flere utførende programmer. I stedet for å binde objektkode til et program når det er koblet, blir det hentet når programmet lastes inn eller under kjøretid når det refereres til en prosedyre. I Windows®-miljøet er disse kjent som dynamiske linkbiblioteker og betegnes med en ".dll" -utvidelse. Systemer som Unix® betegner ofte denne typen filer som et dynamisk delt objekt (DSO). Denne typen objektfiler kan også implementeres for bruk med et bestemt program og vil være en del av installasjon av det programmet.