Heim  >  Artikel  >  Was ist der Unterschied zwischen dynamischer Bibliothek und statischer Bibliothek?

Was ist der Unterschied zwischen dynamischer Bibliothek und statischer Bibliothek?

青灯夜游
青灯夜游Original
2021-07-23 13:37:1939510Durchsuche

Unterschiede: 1. Die Erweiterung statischer Bibliotheken ist im Allgemeinen „.a“ ​​oder „.lib“; die Erweiterung dynamischer Bibliotheken ist im Allgemeinen „.so“ oder „.dll“. 2. Die statische Bibliothek wird während der Kompilierung direkt in das Zielprogramm integriert, und die erfolgreich kompilierte ausführbare Datei kann unabhängig ausgeführt werden. Die dynamische Bibliothek wird während der Kompilierung nicht in das verbundene Zielprogramm eingefügt, dh die ausführbare Datei kann nicht unabhängig ausgeführt werden .

Was ist der Unterschied zwischen dynamischer Bibliothek und statischer Bibliothek?

Die Betriebsumgebung dieses Tutorials: Windows 10-System, Dell G3-Computer.

Der wichtigste Unterschied zwischen einer statischen Bibliothek und einer dynamischen Bibliothek besteht darin, ob die Bibliothek in das Ziel (Programm) kompiliert wird.

Statische (Funktions-)Bibliothek

hat im Allgemeinen die Erweiterung (.a oder .lib), und diese Art von Funktionsbibliothek hat normalerweise die Erweiterung libxxx .a oder xxx.lib. .a.lib),这类的函数库通常扩展名为libxxx.axxx.lib

这类库在编译的时候会直接整合到目标程序中,所以利用静态函数库编译成的文件会比较大,这类函数库最大的优点就是编译成功的可执行文件可以独立运行,而不再需要向外部要求读取函数库的内容;但是从升级难易度来看明显没有优势,如果函数库更新,需要重新编译。

动态函数库

动态函数库的扩展名一般为(.so.dll),这类函数库通常名为libxxx.soxxx.dll

Diese Art von Bibliothek wird

während der Kompilierung direkt in das Zielprogramm integriert

, sodass die mit statischen Funktionsbibliotheken kompilierten Dateien relativ groß sind. Der größte Vorteil dieser Art von Funktionsbibliothek besteht darin, dass die erfolgreich kompilierte ausführbare Datei ausgeführt werden kann Es besteht keine Notwendigkeit, den Inhalt der Funktionsbibliothek von außen zu lesen. Es besteht jedoch offensichtlich kein Vorteil darin, die Funktionsbibliothek zu aktualisieren.

Dynamische Funktionsbibliothek

Die Erweiterung einer dynamischen Funktionsbibliothek lautet im Allgemeinen (.so oder .dll). Diese Art von Funktionsbibliothek wird normalerweise genannt >libxxx .so oder xxx.dll.

Im Gegensatz zu statischen Funktionsbibliotheken, die vollständig im Programm erfasst werden, haben dynamische Funktionsbibliotheken beim Kompilieren nur einen „Zeigeort“ im Programm. Das heißt, wenn die ausführbare Datei den Funktionsbibliotheksmechanismus verwenden muss, wird dies der Fall sein Lesen Sie die Funktionsbibliothek zur Verwendung. Das heißt, die ausführbare Datei kann nicht alleine ausgeführt werden. Dies erleichtert das Upgrade aus Sicht der Produktfunktionsaktualisierung. Sie müssen nur die entsprechende dynamische Bibliothek ersetzen, ohne die gesamte ausführbare Datei neu kompilieren zu müssen.

Zusammenfassend lässt sich Folgendes nicht erkennen:

🎜🎜Aus Sicht der Produktisierung sollte die veröffentlichte Algorithmusbibliothek oder Funktionsbibliothek so dynamisch wie möglich sein, damit sie bequem aktualisiert und aktualisiert werden kann Kompilieren Sie die gesamte ausführbare Datei neu. Nur die neue Version ist dynamisch. Die Bibliothek kann die alte dynamische Bibliothek ersetzen. 🎜🎜Wenn Sie aus Sicht der Funktionsbibliotheksintegration alle veröffentlichten Unterbibliotheken (mehr als eine) in eine dynamische Bibliothek integrieren möchten, um externe Schnittstellen bereitzustellen, müssen Sie alle Unterbibliotheken in statische Bibliotheken kompilieren, damit alle Unterbibliotheken können in die dynamische Zielbibliothek kompiliert werden, und die endgültige integrierte Bibliothek stellt Funktionen für die Außenwelt bereit. 🎜🎜Weitere Informationen zu diesem Thema finden Sie in der Spalte „FAQ🎜“! 🎜

Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen dynamischer Bibliothek und statischer Bibliothek?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn