Unterschied: 1. Die statische Verknüpfung wird durchgeführt, bevor das ausführbare Programm erstellt wird, während die dynamische Verknüpfung durchgeführt wird, wenn das Programm ausgeführt wird. 2. Die Codeladegeschwindigkeit der statischen Verknüpfungsbibliothek ist hoch und die Ausführungsgeschwindigkeit etwas höher 3. Im Vergleich zur dynamischen Verknüpfung ist die durch statische Verknüpfung erzeugte ausführbare Datei größer.
Die Betriebsumgebung dieses Tutorials: Linux5.9.8-System, Dell G3-Computer.
Dynamische Verknüpfung und statische Verknüpfung in Linux
Der Kompilierungs- und Verknüpfungsprozess ist in drei Schritte unterteilt: Zuerst wird die Quelldatei vorverarbeitet. Dieser Prozess verarbeitet hauptsächlich einige durch # definierte Befehle oder Anweisungen. . (wie Makros, #include, vorkompilierte Anweisungen #ifdef usw.) zum Generieren von *.i-Dateien und anschließendem Kompilieren. Dieser Prozess umfasst hauptsächlich lexikalische Analyse, Syntaxanalyse und semantische Analyse usw. zum Generieren von *.s-Assemblydateien. und schließlich die Montage. Dieser Prozess ist relativ einfach. Er besteht darin, die entsprechenden Montageanweisungen in Maschinenanweisungen zu übersetzen und eine verschiebbare binäre Objektdatei zu generieren.
Zwei Arten der Verknüpfung
Statischer Link
Vorteile der statischen Linkbibliothek
a): Die Codeladegeschwindigkeit ist schnell und die Ausführungsgeschwindigkeit ist etwas schneller als bei der dynamischen Linkbibliothek.
b): Stellen Sie einfach sicher, dass die richtige .lib-Datei vorhanden ist Der Entwicklungscomputer und dann Wenn Sie ein Programm in binärer Form verteilen, müssen Sie nicht berücksichtigen, ob ein Versionsproblem mit der .lib-Datei auf dem Computer des Benutzers vorliegt, und Probleme wie DLL-Hölle können vermieden werden.Vorteile dynamischer Linkbibliotheken
a) Sparen Sie mehr Speicher und reduzieren Sie den Seitenaustausch;
b) DLL-Dateien sind unabhängig von EXE-Dateien, solange die Ausgabeschnittstelle unverändert bleibt__, d. h. Name, Parameter, Rückgabewert Typ- und Aufrufkonvention Keine Änderung__, das Ersetzen der DLL-Datei hat keine Auswirkungen auf die EXE-Datei, wodurch die Wartbarkeit und Skalierbarkeit erheblich verbessert wird c) In verschiedenen Programmiersprachen geschriebene Programme können dasselbe Programm aufrufen, solange sie folgen die DLL-Funktionen der Funktionsaufrufkonvention; d) eignen sich für die Softwareentwicklung in großem Maßstab, wodurch der Entwicklungsprozess unabhängig und weniger gekoppelt wird und die Entwicklung und das Testen zwischen verschiedenen Entwicklern und Entwicklungsorganisationen erleichtert wird.Nachteile
a) Die durch statische Verknüpfung generierte ausführbare Datei ist größer und enthält denselben gemeinsamen Code, was zu Verschwendung führt.
b) Anwendungen, die dynamische Linkbibliotheken verwenden, sind nicht selbstvollständig und basieren auf dem DLL-Modul muss ebenfalls vorhanden sein. Wenn Sie die dynamische Verknüpfung zur Ladezeit verwenden und beim Start des Programms festgestellt wird, dass die DLL nicht vorhanden ist, beendet das System das Programm und gibt eine Fehlermeldung aus. Bei der dynamischen Verknüpfung zur Laufzeit wird das System nicht beendet, das Programm kann jedoch nicht geladen werden, da die exportierten Funktionen in der DLL nicht verfügbar sind. Wenn ein Modul aktualisiert wird und das neue Modul nicht mit dem alten Modul kompatibel ist, wird die gesamte Software, die die Ausführung des Moduls erfordert, entfernt. Dies war in frühen Windows-Versionen üblich. Verwandte Empfehlungen: „Linux-Video-Tutorial
“Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen dynamischer Verknüpfung und statischer Verknüpfung unter Linux?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!