Unterschied zwischen 'ld' und 'ld.so'?


8

Obwohl beide als "Linker" bezeichnet werden und zum Verknüpfen von Binärdateien verwendet werden, kann ich nicht wirklich herausfinden, wie sie sich voneinander unterscheiden. Kann mir jemand ihre Unterschiede erzählen?

Antworten:


8

Ohne zu technisch zu werden: Beide sind "Linker", dh ein Tool, das einen kompilierten Code mit / in einen anderen kompilierten Code kombiniert / lädt.

ldist ein statischer Linker, während ld.soes sich um einen dynamischen Linker handelt.

soIch glaube, die Buchstaben stehen für "freigegebenes Objekt" und werden normalerweise als Dateinamensuffix für gemeinsam genutzte Bibliotheken angezeigt, dh Bibliotheken, die dynamisch mit Programmen verknüpft werden können (eine Bibliothek wird von mehreren Programmen "gemeinsam genutzt"). . Im Gegensatz dazu hat eine statische Bibliothek häufig das Dateinamensuffix .afür "Archiv" (vom arDienstprogramm erstellt).

Ein statischer Linker verknüpft ein Programm oder eine Bibliothek zur Kompilierungszeit, normalerweise als letzter Schritt im Kompilierungsprozess, und erstellt eine ausführbare Binärdatei oder eine Bibliothek. Im Fall einer ausführbaren Binärdatei kann es sich um eine statische Binärdatei handeln, bei der alle Bibliotheken in die Binärdatei selbst geladen sind, oder um eine dynamisch verknüpfte Binärdatei, bei der nur einige Bibliotheken statisch verknüpft sind.

Ein dynamischer Linker lädt die Bibliotheken, die zur Kompilierungszeit dynamisch verknüpft wurden, zur Laufzeit in den Adressraum des Prozesses.

Siehe die Handbücher für ldund ld.soauf Ihrem System.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.