Verstehen Sie statische Bibliotheken und dynamische Bibliotheken? Lassen Sie uns über die Implementierungsideen der statischen Verknüpfung und der dynamischen Verknüpfung sprechen

        Statische Bibliotheken und dynamische Bibliotheken sind beide wiederverwendbare Codesammlungen und enthalten beide Definitionen von Funktionen, Klassen oder anderen Typen. Statische Bibliotheken sind Codebibliotheken, die beim Kompilieren des Programms in die ausführbare Datei eingebunden werden, während dynamische Bibliotheken Codebibliotheken sind, die zur Laufzeit in den Speicher geladen werden.

        Die Implementierungsidee der statischen Verknüpfung lautet: Während der Kompilierung kopiert der Compiler den Code der verwendeten statischen Bibliothek in die ausführbare Datei, sodass die ausführbare Datei den gesamten Code enthält. Daher ist es beim Ausführen der ausführbaren Datei nicht erforderlich, die statische Bibliothek zu laden, da der gesamte Code bereits in der ausführbaren Datei enthalten ist. Der Vorteil dieses Ansatzes besteht darin, dass er weniger Flexibilität, aber eine höhere Ausführungseffizienz bietet, da sich der gesamte Code in derselben Datei befindet und kein Laufzeitaufwand entsteht.

        Die Implementierungsidee der dynamischen Verknüpfung lautet: Während der Kompilierung zeichnet der Linker die erforderlichen Bibliotheksinformationen basierend auf den Namen der im Programm referenzierten Funktionen und Bibliotheken auf. Wenn das Programm ausgeführt wird, sucht das Betriebssystem im Speicher nach diesen Bibliotheken und lädt sie in den Speicher. Anschließend kann das Programm die Funktionen in diesen Bibliotheken verwenden. Der Vorteil dieser Methode besteht darin, dass sie flexibler ist, da die ausführbare Datei nicht den gesamten Code enthalten muss, sondern die erforderlichen Bibliotheken zur Laufzeit dynamisch geladen werden, sodass die Größe der ausführbaren Datei kleiner wird. Die Ausführungseffizienz ist jedoch relativ gering, da die Bibliothek zur Laufzeit geladen werden muss und die dynamische Linkbeziehung aufrechterhalten werden muss, was zu einem gewissen Laufzeitaufwand führt.

Guess you like

Origin blog.csdn.net/SYC20110120/article/details/133203826