Ich habe eine Frage: Wie kompiliere ich eine statische Bibliothek unter Linux mit gcc
, dh ich muss meinen Quellcode in eine Datei mit dem Namen out.a kompilieren. Reicht es aus, einfach mit dem Befehl zu kompilieren gcc -o out.a out.c
? Ich bin nicht ganz vertraut mitgcc
, hoffe, jemand kann mir helfen.
c
gcc
static-libraries
Summer_More_More_Tea
quelle
quelle
Antworten:
Siehe Erstellen einer gemeinsam genutzten und statischen Bibliothek mit dem gnu-Compiler [gcc]
-c
bedeutet, eine Zwischenobjektdatei anstelle einer ausführbaren Datei zu erstellen.Dadurch wird die statische Bibliothek erstellt.
r
bedeutet, mit Ersetzung einzufügenc
, ein neues Archiv zu erstellen unds
einen Index zu schreiben. Weitere Informationen finden Sie wie immer auf der Manpage .quelle
Hier ein vollständiges Makefile-Beispiel:
Makefile
Erklären des Makefiles:
target: prerequisites
- der Regelkopf$@
- bedeutet das Ziel$^
- bedeutet alle Voraussetzungen$<
- bedeutet nur die erste Voraussetzungar
- Ein Linux-Tool zum Erstellen, Ändern und Extrahieren aus Archiven. Weitere Informationen finden Sie in den Manpages . Die Optionen in diesem Fall bedeuten:r
- Ersetzen Sie die im Archiv vorhandenen Dateienc
- ein Archiv erstellen, falls noch nicht vorhandens
- Erstellen Sie einen Objektdatei-Index im ArchivFazit : Die statische Bibliothek unter Linux ist nichts anderes als ein Archiv von Objektdateien.
main.c mit der lib
lib.h der libs- Hauptheader
lib1.c erste lib-Quelle
lib1.h der entsprechende Header
lib2.c zweite lib-Quelle
lib2.h der entsprechende Header
quelle
ar
muss dies erklärt werden, da dies der Schlüssel zum Erstellen der statischen Bibliothek ist.ar
Programm erstellt, ändert und extrahiert aus Archiven, bei denen es sich um einzelne Dateien handelt, die eine Sammlung anderer Dateien in einer Struktur enthalten, die das Abrufen der einzelnen Originaldateien ermöglicht.ar
Erstellt einen Index für die Symbole, die in verschiebbaren Objektmodulen im Archiv definiert sind, wenn Sie die Modifikatoren angeben. (sieheman ar
)c++
Compiler zu unterstützen :#ifdef __cplusplus extern "C" { #endif . . . #ifdef __cplusplus } #endif
Generieren Sie die Objektdateien mit gcc und
ar
bündeln Sie sie dann in einer statischen Bibliothek.quelle