Linker (myös linkkieditori , englanninkielisestä linkkieditorista linker ) on työkaluohjelma, joka suorittaa linkityksen ( "linking" ): se ottaa syötteeksi yhden tai useamman objektimoduulin ja kokoaa niistä suoritettavan tai kirjastomoduulitiedoston.
Aluksi, ennen dynaamisten kirjastojen tuloa , lataajat pystyivät suorittamaan joitain linkerin toimintoja [1] , mutta nykyään ohjelmien lataus on useimmiten varattu erilliseen prosessiin [2] .
Linkittäjä käyttää moduulien linkittämiseen kääntäjän luomia symbolitaulukoita kussakin objektimoduulissa . Nämä taulukot voivat sisältää seuraavan tyyppisiä merkkejä:
Useimmille kääntäjille yksi objektitiedosto on tulosta yhden lähdetiedoston kääntämisestä . Jos ohjelma on rakennettu useista objektitiedostoista, linkkijä kokoaa nämä tiedostot yhdeksi suoritettavaksi tiedostoksi laskemalla ja korvaamalla osoitteita symbolien sijaan joko linkin aikana (staattinen linkki) tai ajon aikana (dynaaminen linkki).
Linkkeri voi poimia objektitiedostoja erikoiskokoelmista, joita kutsutaan kirjastoiksi . Jos kaikkia käyttäjäobjektitiedostojen viittaamia symboleja ei ole määritelty, linkki etsii niiden määritelmät kirjastoista, jotka käyttäjä on sille syötteeksi antanut. Tyypillisesti oletuslinkkeri käyttää yhtä tai useampaa järjestelmäkirjastoa. Kun jonkin etsityn symbolin määritelmän sisältävä objektitiedosto löytyy, linkkijä voi sisällyttää sen (tiedoston) suoritettavaan tiedostoon (staattisen linkityksen tapauksessa) tai lykätä sitä ohjelman käynnistymiseen asti (dynaamisen linkityksen tapauksessa). .
Linkittäjän tehtävänä on määritellä ja linkittää viittauksia määrittelemättömiin nimiin kussakin moduulissa. Jokaisen tuodun nimen määritelmä löytyy muista moduuleista, nimen maininta korvataan sen osoitteella .
Linkkeri ei normaalisti suorita proseduuri- ja toimintoparametrien tyypin tai lukumäärän tarkistusta. Jos on tarpeen yhdistää vahvasti kirjoitetuilla kielillä kirjoitettujen ohjelmien objektimoduuleja, niin tarvittavat tarkistukset on suoritettava lisäapuohjelmalla ennen linkkerin käynnistämistä.
Suoritettavat tiedostomuodot ( vertailu ) | |
---|---|
Unix | |
Windows , DOS ja OS/2 | |
muu |