Construcție statică - Static build
O construcție statică este o versiune compilată a unui program care a fost legat static de biblioteci.
Conectare
În informatică , conectarea înseamnă luarea unuia sau mai multor obiecte generate de compilatoare și asamblarea lor într-un singur program executabil . Obiectele sunt module de program care conțin definiții ale codului mașinii și ale simbolurilor , care vin în două varietăți:
- Simbolurile definite sau exportate sunt funcții sau variabile care sunt prezente în modulul reprezentat de obiect și care ar trebui să fie disponibile pentru a fi utilizate de alte module.
- Simbolurile nedefinite sau importate sunt funcții sau variabile care sunt apelate sau referite de acest obiect, dar nu sunt definite intern.
Un program linker rezolvă apoi referințele la simboluri nedefinite, aflând ce alt obiect definește un simbol în cauză și înlocuind substituenții cu adresa simbolului. Linkerii pot prelua obiecte dintr-o colecție numită bibliotecă . Programul final nu include întreaga bibliotecă, ci doar acele obiecte din ea care sunt necesare. Există biblioteci în diverse scopuri și una sau mai multe biblioteci de sistem sunt de obicei conectate implicit.
Conectare dinamică
Mediile moderne de sisteme de operare permit conectarea dinamică sau amânarea rezolvării unor simboluri nedefinite până la executarea unui program. Asta înseamnă că executabilul conține în continuare simboluri nedefinite, plus o listă de obiecte sau biblioteci care vor oferi definiții pentru acestea. Încărcarea programului va încărca și aceste obiecte / biblioteci și va efectua o legătură finală.
Conectarea dinamică oferă trei avantaje:
- Bibliotecile utilizate adesea (de exemplu bibliotecile de sistem standard) trebuie să fie stocate într-o singură locație, nu duplicate în fiecare binar.
- Dacă o bibliotecă este actualizată sau înlocuită, toate programele care o utilizează dinamic vor beneficia imediat de corecții. Construcțiile statice ar trebui mai întâi să fie reconectate.
- Dimensiunea fișierului executabil binar este mai mică decât omologul său legat static.
Clădire statică
Într-un program construit static , nu are loc o legare dinamică: toate legările au fost făcute la compilare .
Construcțiile statice au un comportament foarte previzibil (deoarece nu se bazează pe versiunea specială a bibliotecilor disponibile în sistemul final) și se găsesc în mod obișnuit în instrumentele de criminalistică și securitate pentru a evita posibila contaminare sau disfuncționalitate din cauza bibliotecilor defecte de pe mașina examinată. Aceeași flexibilitate care permite unei biblioteci actualizate să beneficieze de toate aplicațiile legate dinamic poate împiedica, de asemenea, aplicațiile care presupun prezența unei versiuni specifice a unei anumite biblioteci să ruleze corect. Dacă fiecare aplicație dintr-un sistem trebuie să aibă propria copie a unei biblioteci dinamice pentru a asigura o funcționare corectă, beneficiile legării dinamice sunt discutabile.
Un alt avantaj al compilărilor statice este portabilitatea lor: odată ce fișierul executabil final a fost compilat, nu mai este necesar să păstrați fișierele bibliotecii la care se referă programul, deoarece toate părțile relevante sunt copiate în fișierul executabil. Ca urmare, atunci când instalează un program construit static pe un computer, utilizatorul nu trebuie să descarce și să instaleze biblioteci suplimentare: programul este gata să ruleze.
Vezi si
- Biblioteca statică
- Bibliotecă
- Decorați numele
- Tabel de relocare
- Biblioteca de rulare
- Sistem de rulare
Referințe
- Levine, John R. (2000) [octombrie 1999]. Linkere și încărcătoare . Seria Morgan Kaufmann în inginerie și programare software (1 ed.). San Francisco, SUA: Morgan Kaufmann . ISBN 1-55860-496-0 . ISBN 978-1-55860-496-4 .
- Keren, Guy (2002). Construirea și utilizarea bibliotecilor „C” statice și partajate . Little Unix Programmers Group (LUPG).