Differenza tra 'ld' e 'ld.so'?


8

Mentre entrambi sono chiamati "linker" e sono usati per collegare i binari, non riesco davvero a capire come differiscano l'uno dall'altro. Qualcuno può dirmi le loro differenze?

Risposte:


8

Senza diventare troppo tecnici: entrambi sono "linker", ovvero uno strumento che combina / carica un pezzo di codice compilato con / in un altro pezzo di codice compilato.

ldè un linker statico, mentre ld.soè un linker dinamico.

Le lettere sosono, credo, abbreviazione di "oggetto condiviso", e di solito lo vedrai come un suffisso del nome file delle librerie condivise, cioè librerie che possono essere collegate dinamicamente ai programmi (una libreria è "condivisa" tra più programmi) . Al contrario, una libreria statica ha spesso il suffisso del nome file .a, per "archivio" (creato ardall'utilità).

Un linker statico collega un programma o una libreria in fase di compilazione, in genere come ultimo passaggio del processo di compilazione, creando un eseguibile binario o una libreria. Nel caso di un file eseguibile binario, può essere un file binario statico con tutte le librerie caricate nel file binario stesso oppure può essere un file binario collegato dinamicamente con solo alcune librerie collegate staticamente.

Un linker dinamico carica le librerie che sono state collegate in modo dinamico in fase di compilazione nello spazio degli indirizzi del processo in fase di esecuzione.

Consulta i manuali per lde ld.sosul tuo sistema.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.