Heim > Backend-Entwicklung > C++ > Hauptteil

Was ist der Unterschied zwischen statischen Bibliotheken, gemeinsam genutzten Objekten und DLLs in C/C?

Patricia Arquette
Freigeben: 2024-10-30 10:56:02
Original
513 Leute haben es durchsucht

 What's the Difference Between Static Libraries, Shared Objects, and DLLs in C/C  ?

Unterscheidung statischer Bibliotheken, gemeinsam genutzter Objekte und DLLs in der C/C-Entwicklung

Statische und gemeinsam genutzte Bibliotheken verstehen

Statisch Bibliotheken (.a-Dateien) werden während der Verknüpfungsphase in eine Anwendung integriert, wobei eine Kopie der gesamten Bibliothek in die endgültige ausführbare Datei integriert wird. Folglich ist die Anwendung eigenständig und die Bibliotheksfunktionen sind jederzeit leicht zugänglich.

Im Gegensatz dazu werden gemeinsam genutzte Objekte (.so-Dateien) während der Laufzeit nur einer Kompatibilitätsprüfung mit der entsprechenden Header-Datei (.h) unterzogen Verlinkung. Sie werden bei Bedarf erst in der Laufzeitphase geladen und bieten so die Flexibilität, die „.so“-Datei zu ersetzen, ohne die Anwendung neu zu kompilieren.

Die Unterscheidung zwischen Shared Objects und DLLs

Während sowohl freigegebene Objekte als auch Dynamic Link Libraries (DLLs) die Erweiterung „.so“ gemeinsam haben, weisen sie auf Linux- und POSIX-kompatiblen Systemen einige bemerkenswerte Unterschiede auf.

Freigegebene Objekte werden normalerweise automatisch geladen, wenn eine Anwendung gestartet wird und bleiben als separate Einheiten verfügbar. DLLs erfordern jedoch das explizite Laden durch den dlopen()-Aufruf innerhalb der Anwendung.

Freigegebene Archive: Eine einzigartige Einheit

Freigegebene Archive sind statische Bibliotheken, die nie verwendet werden direkt über Anwendungen. Sie fungieren als Vermittler und ermöglichen es anderen statischen Bibliotheken, sich mit ihnen zu verknüpfen und bestimmte Funktionen oder Ressourcen in ihren eigenen Code zu integrieren. Freigegebene Archive erfordern spezielle Kompilierungsflags (-fPIC und -export-shared), um mit dynamischen Bibliotheken geteilt zu werden.

Zusätzliche Hinweise vom Update

Obwohl gemeinsam genutzte Objekte mit DLLs gleichgesetzt werden , verwendete das Unternehmen, bei dem der Fragesteller beschäftigt war, umgangssprachlich den Begriff „DLL“, um sich auf gemeinsam genutzte Bibliotheken zu beziehen. Darüber hinaus handelte es sich bei der Bezeichnung „S“ für gemeinsam genutzte Archive um eine unternehmensspezifische Konvention und nicht um einen Industriestandard.

Zusammenfassend lässt sich sagen, dass statische Bibliotheken eigenständige Anwendungen bereitstellen, während gemeinsam genutzte Objekte Laufzeitflexibilität bieten, ohne die Zugänglichkeit des Codes zu beeinträchtigen. Durch die gemeinsame Nutzung von Archiven wird die Lücke zwischen statischen und gemeinsam genutzten Bibliotheken geschlossen, sodass Funktionen über mehrere Module hinweg gemeinsam genutzt werden können.

Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen statischen Bibliotheken, gemeinsam genutzten Objekten und DLLs in C/C?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!