2012-04-03 16 views
7

Ich weiß, was ein dynamischer Lader tut. Es lädt Programme wie und wann es von der Anwendung zur Laufzeit angefordert wird, wodurch der Speicherfußabdruck minimiert wird. Aber ich bekomme wirklich nicht, was ist dieser dynamische Linker? Und was sind seine Vorteile? Ich lese viele Online-Sachen, aber sie sprechen in abstrakten Begriffen.Was ist der Unterschied zwischen Dynamic Linker und Dynamic Loader?

Kann mir jemand einige einfache Beispiele erklären?

+0

http://StackOverflow.com/Questions/311882/what-do-statisch-linked-and-dynamically-linked-mean/311889#311889 – Vijay

+0

@peter thanks! es half. –

Antwort

6

Sie sind wirklich zwei Begriffe für die gleiche Sache.

In der Unix-Welt bezeichnet der Begriff Dynamic Linker die Komponente des Betriebssystems, die dynamische Bibliotheken zur Laufzeit verknüpft, während ein Loader auf den meisten anderen Systemen sowohl das Laden als auch das Verknüpfen dynamischer Bibliotheken programmiert.

Da das Laden von Bibliotheken unter Unix-ähnlichen Systemen durch eine separate Komponente (ld.so am häufigsten) erfolgt, wird ein dynamischer Linker als etwas anderes als der Programmlader angesehen. Compiler fügen in der Regel einige Stub-Codes am Anfang der ausführbaren Datei ein, um ld.so zu laden, und ld.so würde weiterhin den Rest der abhängigen Bibliotheken laden, bevor main aufgerufen wird. Während das Programm im Kernel geladen wird, erfolgt die Verknüpfung dynamischer Bibliotheken normalerweise im Benutzerbereich.

Dies ist anders als in Windows, wo sowohl das Laden von Programmen als auch das Verknüpfen von dynamischen Bibliotheken im Kernel-Modus erfolgt.

Verwandte Themen