Unterschied zwischen ‚ld‘ und ‚ld.so‘?

Unterschied zwischen ‚ld‘ und ‚ld.so‘?

Obwohl beide als „Linker“ bezeichnet werden und zum Verknüpfen von Binärdateien verwendet werden, kann ich nicht wirklich herausfinden, worin sie sich voneinander unterscheiden. Kann mir jemand die Unterschiede erklären?

Antwort1

Ohne zu technisch zu werden: Bei beiden handelt es sich um „Linker“, also ein Tool, das einen Teil kompilierten Codes mit/in einen anderen Teil kompilierten Codes kombiniert/lädt.

ldist ein statischer Linker, während ld.soein dynamischer Linker ist.

Die Buchstaben sosind, glaube ich, die Abkürzung für „shared object“ und Sie werden es normalerweise als Dateinamensuffix von gemeinsam genutzten Bibliotheken sehen, also Bibliotheken, die dynamisch in Programme eingebunden werden können (eine Bibliothek wird von mehreren Programmen „gemeinsam genutzt“). Im Gegensatz dazu hat eine statische Bibliothek oft das Dateinamensuffix .a, für „Archiv“ (vom arDienstprogramm erstellt).

Ein statischer Linker verknüpft ein Programm oder eine Bibliothek zur Kompilierzeit, normalerweise als letzter Schritt im Kompilierprozess, und erstellt eine binäre ausführbare Datei oder eine Bibliothek. Im Fall einer binären ausführbaren Datei kann es sich um eine statische Binärdatei mitalleBibliotheken, die in die Binärdatei selbst geladen wurden, oder es kann sich um eine dynamisch verknüpfte Binärdatei handeln, in die nur einige Bibliotheken statisch verknüpft sind.

Ein dynamischer Linker lädt die zur Kompilierzeit dynamisch verknüpften Bibliotheken zur Laufzeit in den Adressraum des Prozesses.

Weitere Informationen finden Sie in den Handbüchern für ldund ld.soauf Ihrem System.

verwandte Informationen