Punto informatico Network
Canali
20091011195959_536691528_20091011195943_1980265020_sl_open.png

Cenni generali sulla compilazione in GNU/Linux

21/05/2010
- A cura di
Linux & Open Source - Probabilmente saper "compilare" qualcosa in sistemi operativi derivanti da UNIX è una delle basi a cui riferirsi per ottenere una vera e propria "raffinazione" e customizzazione dei software installati nel sistema.

Tag

Passa qui con il mouse e visualizza le istruzioni per utilizzare i tag!

compilazione (1) .

Valutazione

  •  
Voto complessivo 4 calcolato su 25 voti

Appendice 4: Caricamento dei programmi eseguibili in GNU/Linux

Distinguiamo 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:

  • -> statically linked
  • -> dinamically linked

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:

Compilation_readelf_bash.pngÈ possibile anche vedere tutte le librerie di cui un programma ha bisogno con ldd:

ldd /bin/bash

Compilation_ldd_bash.pngUna delle linee contiene proprio ld-linux.so.2, che è il nostro dynamic linker.

Pagina successiva
Appendice 5: Parametri aggiuntivi
Pagina precedente
Appendice 3: Uso delle patch

 

Segnala ad un amico

Tuo nome Tuo indirizzo e-mail (opzionale)
Invia a:
    Aggiungi indirizzo email
    Testo

    © Copyright 2019 BlazeMedia srl - P. IVA 14742231005

    • Gen. pagina: 0.22 sec.
    •  | Utenti conn.: 25
    •  | Revisione 2.0.1
    •  | Numero query: 45
    •  | Tempo totale query: 0.05