Was ist eine Datei mit der Erweiterung .a?

72

Ich habe dies heruntergeladen: https://github.com/mongodb/mongo-c-driver

Und jetzt versuche ich es in meinem C-Programm zu verwenden, aber ich weiß nicht, was ich mit den generierten .a-Dateien machen soll. Was sind Sie? Ich konnte keine Informationen finden, auch nicht im GCC-Handbuch.

Und ich habe es so gebaut:

Kann ich mit meinem C89-Programm auch C99- Bibliotheken verwenden?

Blub
quelle

Antworten:

91

.aDateien sind statische Bibliotheken, die normalerweise vom Archivierungsprogramm generiert werden . Normalerweise fügen Sie die Header-Dateien hinzu, die dieser statischen Bibliothek zugeordnet sind, und verknüpfen sie beim Kompilieren mit der Bibliothek.

GWW
quelle
Ich dachte, die .so-Dateien sind die Bibliotheksdateien. Muss ich dann beide verwenden?
Blub
10
@Blub: Es gibt sowohl statische als auch gemeinsam genutzte Bibliotheken. Unter Linux ist .a eine statische Bibliothek (Archiv), während .so eine gemeinsam genutzte Bibliothek (gemeinsam genutztes Objekt) ist.
Entspannen Sie
6
Sie können den Inhalt einer .astatischen Bibliothek mithilfe von anzeigen ar tv foo.a. Es ist normalerweise eine Sammlung von .oObjektdateien.
Keith Thompson
4
Wie sollen sie einfach googeln?
Ilia Sidorenko
5
Sie heißen Archivdateien
GWW
27

.aDateien werden mit dem arDienstprogramm erstellt und sind Bibliotheken. Um es mit zu verwenden gcc, sammeln Sie alles .a filesin einem lib/Ordner und verknüpfen Sie es dann mit -L lib/und -l<name of specific library>.

Das Sammeln aller .a-Dateien in lib/ist optional. Dies führt zu besser aussehenden Verzeichnissen mit einer guten Trennung von Code und Bibliotheken, IMHO.

Sriram
quelle