Hva er linker og hvordan fungerer de?
Linkere er en type programvare som kobler sammen objektfiler og biblioteker for å lage en kjørbar fil. De brukes i utviklingen av operativsystemer, applikasjoner og annen programvare. Linkere tar objektfilene generert av kompilatorer og biblioteker som input, og genererer en kjørbar fil som output.
Linkers utfører flere funksjoner, inkludert:
1. Løse symbolske referanser: Når et program er skrevet på et høynivåspråk, kan det inneholde symbolske referanser til funksjoner eller variabler som ikke er definert i gjeldende kildekode. Linkeren løser disse referansene ved å finne definisjonene av funksjonene eller variablene i andre objektfiler eller biblioteker.
2. Flytting av kode og data: Når objektfiler genereres av kompilatoren, kan de inneholde kode og data som er i forhold til plasseringen til objektfilen. Linkeren flytter denne koden og dataene til riktig plassering i den kjørbare filen.
3. Stripping av unødvendig kode og data: Linkeren kan fjerne kode og data som ikke er nødvendig i den endelige kjørbare filen, redusere størrelsen og forbedre ytelsen.
4. Opprette en kjørbar fil: Linkeren tar objektfilene og bibliotekene som input, og genererer en kjørbar fil som kan kjøres på målmaskinen.
Det finnes flere typer linkere tilgjengelig, inkludert:
1. Dynamiske linkere: Disse linkerene lager en kjørbar fil som inneholder en referanse til bibliotekene og andre objektfiler som den er avhengig av. Når programmet kjøres, laster den dynamiske linkeren disse avhengighetene og løser eventuelle symbolske referanser ved runtime.
2. Statiske linkere: Disse linkerene lager en kjørbar fil som inneholder alle avhengighetene som er innebygd i den. Dette betyr at programmet kan kjøres uten ekstra avhengigheter, men det betyr også at størrelsen på den kjørbare filen blir større.
3. Delte linkere: Disse linkerene lager en kjørbar fil som inneholder delte biblioteker, som er samlinger av kode og data som kan brukes av flere programmer. Når et program er koblet mot et delt bibliotek, er bare de spesifikke funksjonene og variablene som trengs inkludert i den endelige kjørbare filen.
Opsummert er linkere en viktig del av programvareutviklingsprosessen, da de tar objektfilene generert av kompilatorer og biblioteker og lag en kjørbar fil som kan kjøres på målmaskinen. De utfører flere funksjoner, inkludert å løse symbolske referanser, flytte kode og data, fjerne unødvendig kode og data og lage en kjørbar fil. Det finnes flere typer linkere tilgjengelig, inkludert dynamiske, statiske og delte linkere.