Linker

Versiunea actuală a paginii nu a fost încă examinată de colaboratori experimentați și poate diferi semnificativ de versiunea revizuită la 18 februarie 2022; verificările necesită 4 modificări .

Linker (de asemenea link editor , din engleză  link editor, linker ) este un program de instrumente care efectuează legături ( „linking” ): preia unul sau mai multe module obiect ca intrare și asamblează un fișier executabil sau modul de bibliotecă din ele.

Inițial, înainte de apariția bibliotecilor dinamice , încărcătoarele puteau îndeplini unele funcții ale linkerului [1] , dar acum, cel mai adesea, încărcarea programelor este alocată unui proces separat [2] .

Pentru a lega module, linker-ul folosește tabele de simboluri create de compilator în fiecare dintre modulele obiect . Aceste tabele pot conține caractere de următoarele tipuri:

Pentru majoritatea compilatoarelor, un fișier obiect este rezultatul compilării unui fișier sursă . Dacă un program este construit din mai multe fișiere obiect, linker-ul asamblează aceste fișiere într-un singur fișier executabil calculând și înlocuind adrese în loc de simboluri, fie în timpul link -ului (link static), fie în timpul execuției (link dinamic).

Linker-ul poate extrage fișiere obiect din colecții speciale numite biblioteci . Dacă nu sunt definite toate simbolurile la care se referă fișierele obiect utilizator, atunci linkerul caută definițiile lor în bibliotecile pe care utilizatorul le-a dat ca intrare. De obicei, una sau mai multe biblioteci de sistem sunt folosite de linkerul implicit. Când este găsit un fișier obiect care conține definiția unui simbol căutat, linkerul îl poate include (fișierul) în fișierul executabil (în cazul legăturii statice) sau îl poate amâna până la pornirea programului (în cazul legăturii dinamice) .

Sarcina linkerului este de a defini și lega referințe la nume nedefinite în fiecare modul. Pentru fiecare nume importat, definiția acestuia se găsește în alte module, mențiunea numelui este înlocuită cu adresa sa .

Linker-ul nu efectuează în mod normal verificarea tipului sau a numărului a parametrilor procedurii și funcției. Dacă este necesară combinarea modulelor obiect ale programelor scrise în limbaje puternic tastate, atunci verificările necesare trebuie efectuate de un utilitar suplimentar înainte de a porni linkerul.

Vezi și

Note

  1. John R. Levine. Legături și încărcătoare. - 1999. - S. 1 .
  2. IBM Corporation. IBM OS Linkage Editor and Loader  (nedefinit) . — 1972.

Literatură