Linker (även länkredigerare , från engelska länkredigerare, linker ) är ett verktygsprogram som utför länkning ( ”länkning” ): det tar en eller flera objektmoduler som indata och sätter ihop en körbar eller biblioteksmodulfil från dem.
Inledningsvis, före tillkomsten av dynamiska bibliotek , kunde laddare utföra vissa funktioner av länken [1] , men nu, oftast, tilldelas laddningsprogram till en separat process [2] .
För att länka moduler använder länken symboltabeller skapade av kompilatorn i var och en av objektmodulerna . Dessa tabeller kan innehålla tecken av följande typer:
För de flesta kompilatorer är en objektfil resultatet av att kompilera en källfil . Om ett program är byggt från flera objektfiler, sammanställer länken dessa filer till en enda körbar fil genom att beräkna och ersätta adresser istället för symboler, antingen vid länktid (statisk länk) eller vid körning (dynamisk länk).
Länkaren kan extrahera objektfiler från speciella samlingar som kallas bibliotek . Om inte alla symboler som refereras till av användarobjektfiler är definierade, letar länken efter deras definitioner i biblioteken som användaren har gett den som indata. Vanligtvis används ett eller flera systembibliotek av standardlänken. När en objektfil som innehåller definitionen av någon sökt symbol hittas, kan länken inkludera den (filen) i den körbara filen (vid statisk länkning) eller skjuta upp den tills programmet startar (vid dynamisk länkning) .
Länkarens uppgift är att definiera och länka referenser till odefinierade namn i varje modul. För varje importerat namn finns dess definition i andra moduler, omnämnandet av namnet ersätts med dess adress .
Länkaren utför normalt inte typ- eller räkningskontroll av procedur- och funktionsparametrar. Om det är nödvändigt att kombinera objektmoduler av program skrivna på starkt skrivna språk, måste de nödvändiga kontrollerna utföras av ett extra verktyg innan länkningen startas.
Körbara filformat ( jämförelse ) | |
---|---|
Unix | |
Windows , DOS och OS/2 | |
Övrig |