Ich versuche derzeit, eine C-Anwendung auf AIX zu portieren, und bin verwirrt. Was sind .a und .so Dateien und wie werden sie beim Erstellen / Ausführen einer Anwendung verwendet?
Ich versuche derzeit, eine C-Anwendung auf AIX zu portieren, und bin verwirrt. Was sind .a und .so Dateien und wie werden sie beim Erstellen / Ausführen einer Anwendung verwendet?
Antworten:
Archivbibliotheken (.a) sind statisch verknüpft, dh wenn Sie Ihr Programm mit der Option -c in gcc kompilieren. Wenn sich also die Bibliothek ändert, müssen Sie Ihren Code erneut kompilieren und erstellen.
Der Vorteil von .so (gemeinsam genutztes Objekt) gegenüber einer .a-Bibliothek besteht darin, dass sie zur Laufzeit verknüpft sind, dh nach der Erstellung Ihrer Option .o-Datei -o in gcc. Wenn sich also die .so-Datei ändert, müssen Sie Ihr Hauptprogramm nicht neu kompilieren. Stellen Sie jedoch sicher, dass Ihr Hauptprogramm mit dem Befehl ln mit der neuen .so-Datei verknüpft ist.
Dies hilft Ihnen beim Erstellen der .so-Dateien. http://www.yolinux.com/TUTORIALS/LibraryArchives-StaticAndDynamic.html
Hoffe das hilft.
pic
(positionsunabhängiger Code)?
.a sind statische Bibliotheken. Wenn Sie in ihnen gespeicherten Code verwenden, wird dieser ihnen entnommen und in Ihre eigene Binärdatei eingebettet. In Visual Studio sind dies LIB-Dateien.
.so sind dynamische Bibliotheken. Wenn Sie darin gespeicherten Code verwenden, wird dieser nicht übernommen und in Ihre eigene Binärdatei eingebettet. Stattdessen wird nur darauf verwiesen, sodass die Binärdatei von ihnen abhängt und der Code aus der so-Datei zur Laufzeit hinzugefügt / geladen wird. In Visual Studio / Windows sind dies DLL-Dateien (mit kleinen LIB-Dateien, die Verknüpfungsinformationen enthalten).
.lib
Datei für .dll
wird als Importbibliothek bezeichnet.
.a-Dateien sind normalerweise Bibliotheken, die statisch verknüpft werden (oder genauer Archive), und
.so sind dynamisch verknüpfte Bibliotheken.
Um einen Port zu erstellen, benötigen Sie den Quellcode, der für die Erstellung kompiliert wurde, oder gleichwertige Dateien auf Ihrem AIX-Computer.
Sie werden in der Verknüpfungsphase verwendet. .a
Dateien sind statisch verknüpft und .so
Dateien sind sozusagen verknüpft, dass die Bibliothek benötigt wird, wenn Sie die Exe ausführen.
Sie können herausfinden, wo sie gespeichert sind, indem Sie sich eines der lib-Verzeichnisse ansehen ... /usr/lib
und /lib
die meisten davon haben, und es gibt auch die LIBRARY_PATH
Umgebungsvariable.
Wikipedia ist eine anständige Quelle für diese Informationen.
Um mehr über statische Bibliotheksdateien wie .a zu erfahren, lesen Sie Static libarary
Informationen zu gemeinsam genutzten Bibliotheksdateien wie .so lesen Sie Library_ (Computing) #Shared_libraries. Auf dieser Seite finden Sie auch nützliche Informationen im Abschnitt Dateinamen .
a
rchive und andere ists
haredo
bject