A Linker (egyben linkszerkesztő , angol linkszerkesztőből linker ) egy linkelést ( „linking” ) végrehajtó eszközprogram : egy vagy több objektummodult vesz be bemenetként , és ezekből összeállít egy futtatható vagy könyvtári modul fájlt.
Kezdetben, a dinamikus könyvtárak megjelenése előtt a betöltők elláthatták a linker egyes funkcióit [1] , de mostanában a programok betöltése leggyakrabban egy külön folyamathoz van hozzárendelve [2] .
A modulok összekapcsolásához a linker a fordító által az egyes objektummodulokban létrehozott szimbólumtáblákat használ . Ezek a táblázatok a következő típusú karaktereket tartalmazhatják:
A legtöbb fordítónál egy objektumfájl egy forrásfájl fordításának eredménye . Ha egy program több objektumfájlból épül fel, a linker ezeket a fájlokat egyetlen végrehajtható fájlba állítja össze úgy, hogy szimbólumok helyett címeket számít ki és helyettesít, akár linkidőben (statikus hivatkozás), akár futási időben (dinamikus hivatkozás).
A linker speciális gyűjteményekből , úgynevezett könyvtárakból képes kibontani az objektumfájlokat . Ha a felhasználói objektumfájlok által hivatkozott szimbólumok mindegyike nincs definiálva, akkor a linker a definícióikat keresi a felhasználó által bemenetként megadott könyvtárakban. Általában egy vagy több rendszerkönyvtárat használ az alapértelmezett linker. Ha valamilyen keresett szimbólum definícióját tartalmazó objektumfájlt találunk, a linker beillesztheti azt (a fájlt) a futtatható fájlba (statikus linkelés esetén), vagy elhalaszthatja a program indulásáig (dinamikus linkelés esetén). .
A linker feladata az, hogy minden modulban meghatározatlan nevekre hivatkozásokat definiáljon és kapcsoljon össze. Minden importált név definíciója megtalálható más modulokban, a név említését a cím helyettesíti .
A linker általában nem hajtja végre az eljárás- és funkcióparaméterek típus- vagy számellenőrzését. Ha erősen tipizált nyelven írt programok objektummoduljait kell kombinálni, akkor a szükséges ellenőrzéseket egy további segédprogramnak kell elvégeznie a linker elindítása előtt.
Futtatható fájlformátumok ( összehasonlítás ) | |
---|---|
Unix | |
Windows , DOS és OS/2 | |
Egyéb |