Heim > Artikel > Betrieb und Instandhaltung > Was ist der Unterschied zwischen dynamischen Bibliotheken und statischen Bibliotheken unter Linux?
Unterschied: 1. Die statische Bibliothek wird beim Kompilieren des Programms mit dem Zielcode verbunden, und die statische Bibliothek wird nicht mehr benötigt, wenn das Programm ausgeführt wird Das Programm ist kompiliert, wird aber geladen, wenn das Programm ausgeführt wird. Daher muss die dynamische Bibliothek vorhanden sein, wenn das Programm ausgeführt wird. 2. Die von dynamischen Bibliotheken generierten Dateien sind relativ klein, während die von statischen Bibliotheken generierten Dateien relativ groß sind.
Die Betriebsumgebung dieses Tutorials: CentOS 6-System, Dell G3-Computer.
Gleiche Punkte:
Sowohl statische als auch dynamische Bibliotheken werden durch .o-Dateien erstellt. Daher müssen wir zuerst das Quellprogramm über gcc in eine .o-Datei kompilieren.
1. Die Ladezeit des Codes ist unterschiedlich. Die statische Bibliothek wird mit dem Zielcode verbunden Wenn das Programm kompiliert wird, wird die statische Bibliothek nicht mehr benötigt, wenn das Programm ausgeführt wird. Die dynamische Bibliothek wird beim Kompilieren des Programms nicht mit dem Zielcode verbunden, sondern erst geladen, wenn das Programm ausgeführt wird Wenn das Programm ausgeführt wird, müssen daher auch dynamische Bibliotheken vorhanden sein Die dynamische Funktionsbibliothek wird während der Kompilierung nicht in den Zielcode kompiliert. Ihr Programm ruft die entsprechende Funktion in der Funktionsbibliothek nur auf, wenn es die entsprechende Funktion erreicht, sodass die von der dynamischen Funktionsbibliothek generierte ausführbare Datei relativ klein ist.
Dynamische Bibliothek Kompilierung:Das Wichtigste ist eine GCC-Befehlszeilenoption, -shared Diese Option gibt an, eine dynamische Linkbibliothek zu generieren, zum Beispiel:
g++ -shared -o libd1.so d1.o /*Erstellen Sie die dynamische Bibliotheksdatei d1.so basierend auf der Zwischenzieldatei d1.o*/Verwenden Sie unter UNIX den Befehl ar, um eine statische Bibliothek zu erstellen oder zu betreiben. ar Archivefile objfile
g++ -o hello.o -c hello.cpp ar cqs libHello.a hello.oVerwandte Empfehlungen: „Linux Video Tutorial“
Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen dynamischen Bibliotheken und statischen Bibliotheken unter Linux?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!