Canali
![]() Ultime news
![]() Ultimi articoli
![]() Le ultime dal Forum |
![]() Correlati![]() TagAppendice 4: Caricamento dei programmi eseguibili in GNU/LinuxDistinguiamo prima di tutto gli applicativi in due grandi categorie, a seconda di come viene effettuato il linking del programma alle librerie di cui ha bisogno:
I programmi statically linked (collegati staticamente) vengono generati includendo nel proprio spazio di memoria individuale tutte le funzioni necessarie per il loro corretto funzionamento. Viceversa, i software collegati dinamicamente (dinamically linked) hanno dei riferimenti a funzioni che sono contenute in librerie esterne. Di conseguenza, essi hanno bisogno di queste librerie per funzionare. Ora è importante comprendere che i programmi dinamically linked non possono chiamare se stessi, poiché senza le librerie necessarie caricate in memoria non possono funzionare. In GNU/Linux ci viene in aiuto un programma molto speciale, chiamato dynamic loader (o dynamic linker, o runtime linker). Il suo nome può variare tra le diverse architetture, ma solitamente viene installato come ld.so o ld-linux.so.2. Esso è il runtime linker, ovvero un piccolo programma che si occupa di rintracciare le librerie condivise usate da un'applicazione. Il processo funziona più o meno così: -> Il programma invocato passa il controllo al dynamic linker con una lista di librerie da caricare in memoria; -> Il dynamic linker cerca e carica le librerie richieste; -> Il dynamic linker restituisce il controllo all'applicazione chiamante, insieme agli indirizzi di memoria in cui le librerie sono state caricate; -> L'applicazione viene eseguita e fa riferimento alle zone di memoria comunicate dal loader per le funzioni. Il dynamic linker può anche essere chiamato "program interpreter" e per vedere questo parametro basta leggere i contenuti di un'applicazione tramite readelf. Provate a digitare readelf -l /bin/bash La sezione in cui è nominato il program interpreter è denominata Program Headers:
ldd /bin/bash
![]() Appendice 5: Parametri aggiuntivi ![]() Appendice 3: Uso delle patch Pagine
Segnala ad un amico |
© Copyright 2025 BlazeMedia srl - P. IVA 14742231005