3. Kompilieren Sie Bibliotheksdateien.
4. Statische Bibliothek erstellen., Dieser Schritt besteht darin, mehrere Objektdateien in einer statischen Bibliothek zu bündeln (siehe ar für Details). Die Ausgabe dieses Schritts ist eine statische Bibliothek.
5. Jetzt ist unsere statische Bibliothek einsatzbereit. An diesem Punkt könnten wir einfach lib_mylib kopieren.ein anderswo, um es zu benutzen. Für Demo-Zwecke, lassen Sie uns die Bibliothek im aktuellen Verzeichnis halten.
Lassen Sie uns ein Treiberprogramm erstellen, das die oben erstellte statische Bibliothek verwendet.
1., Erstellen Sie eine C-Datei mit der Hauptfunktion
#include "lib_mylib.h"
void
main()
{
fun();
}
2., Kompilieren Sie das Treiberprogramm.
gcc -c driver.c -o driver.o
3. Verknüpfen Sie das kompilierte Treiberprogramm mit der statischen Bibliothek. Beachten Sie, dass-L. verwendet wird, um anzuzeigen, dass sich die statische Bibliothek im aktuellen Ordner befindet (Details zu den Optionen-L und-l finden Sie hier).
gcc -o driver driver.o -L. -l_mylib
4. Führen Sie das Treiberprogramm
./driver fun() called from a static library
Im Folgenden sind einige wichtige Punkte zu statischen Bibliotheken aufgeführt.
1. Bei einer statischen Bibliothek wird der eigentliche Code vom Linker aus der Bibliothek extrahiert und zum Erstellen der endgültigen ausführbaren Datei an der Stelle verwendet, an der Sie Ihre Anwendung kompilieren/erstellen.,
2. Jeder Prozess erhält eine eigene Kopie des Codes und der Daten. Wo wie bei dynamischen Bibliotheken nur Code gemeinsam genutzt wird, sind Daten für jeden Prozess spezifisch. Für statische Bibliotheken sind die Speicherabdrücke größer. Wenn beispielsweise alle Fenstersystemtools statisch verknüpft wären, würden für einen typischen Benutzer mehrere zehn Megabyte RAM verschwendet und der Benutzer würde durch viel Paging verlangsamt.
3. Da Bibliothekscode zur Kompilierungszeit verbunden ist, hat die endgültige ausführbare Datei zur Laufzeit keine Abhängigkeiten von der Bibliothek, dh, keine zusätzlichen Laufzeitladekosten, das bedeutet, dass Sie keine Kopie der verwendeten Bibliothek mitnehmen müssen und alles unter Ihrer Kontrolle haben und es keine Abhängigkeit gibt.
4. Sobald in statischen Bibliotheken alles in Ihrer Anwendung gebündelt ist, müssen Sie sich keine Sorgen mehr machen, dass der Client über die richtige Bibliothek (und Version) auf seinem System verfügt.
5. Ein Nachteil statischer Bibliotheken besteht darin, dass Sie für jede Änderung(Abstufung) in den statischen Bibliotheken das Hauptprogramm jedes Mal neu kompilieren müssen.
6., Ein großer Vorteil statischer Bibliotheken, die bereits jetzt bevorzugt werden,“ist die Geschwindigkeit“. Es wird keine dynamische Abfrage von Symbolen in statischen Bibliotheken geben. Viele Produktionslinien-Software verwenden statische Bibliotheken auch heute noch.
Dynamische Verknüpfung und dynamische Bibliotheken Dynamische Verknüpfung erfordert nicht den Code kopiert werden, wird es nur durch Platzieren Namen der Bibliothek in der Binärdatei getan. Die eigentliche Verknüpfung erfolgt, wenn das Programm ausgeführt wird, wenn sich sowohl die Binärdatei als auch die Bibliothek im Speicher befinden. Beispiele für dynamische Bibliotheken (Bibliotheken, die zur Laufzeit verknüpft sind) sind .so unter Linux und .dll in Windows.,
Wir werden in Kürze weitere Punkte zu dynamischen Bibliotheken und deren Erstellung behandeln.
Dieser Artikel wird von Abhijit Saha zusammengestellt und von GeeksforGeeks Team überprüft. Bitte schreiben Sie Kommentare, wenn Sie etwas falsch finden, oder Sie möchten mehr Informationen über das oben diskutierte Thema teilen.
Achtung Leser! Hör jetzt nicht auf zu lernen. Holen Sie sich alle wichtigen CS Theory Konzepte für SDE Interviews mit dem CS Theory Kurs zu einem studentenfreundlichen Preis und werden Industrie bereit.
Artikel-Tags :
Praxis-Tags :