Ich habe eine Bibliothek mit den Dateien pila.h
und pila.c
erstellt. Ich kompiliere die Datei pila.c
mit gcc pila.c -c
und diese Bibliothek funktioniert gut. Ich habe es getestet.
Dann habe ich eine andere Bibliothek gemacht. Diese Bibliothek hat die Dateien pila_funciones_extra.h
und pila_funciones_extra.c
. In dieser Bibliothek muss ich die erste Bibliothek einschließen. In der Datei pila_funciones_extra.h
setze ich die nächste Zeile, um es einzuschließen:
und in der Datei pila_funciones_extra.c
setze ich die nächste Zeile:
wie es sein muss.
Aber wenn ich versuche, die Datei pila_funciones_extra.c
zu kompilieren, erkennt der Compiler die Einbindung der Bibliothek pila
nicht. Es besagt, dass die Funktionen, Strukturen, Konstanten und Makros, die in der Bibliothek pila
definiert sind, nicht definiert wurden.
Ich habe versucht, es mit gcc pila_funciones_extra.c -c
und gcc pila_funciones_extra.c -c pila.o
zu kompilieren, aber es funktioniert nicht.
Ich habe sichergestellt, dass sich alle Dateien im selben Ordner befinden.
Ich arbeite an Ubuntu.
Kann mir jemand den richtigen Weg erklären, es zu kompilieren?
Nehmen Sie sich zunächst immer die Angewohnheit, mit -Wall
(und vielleicht sogar auch -Wextra
, um noch mehr Warnungen zu erhalten) zu gcc
zu kompilieren; es gibt Ihnen fast alle Warnungen, und Sie sollten Ihren Code verbessern, bis keine Warnungen mehr gegeben werden.
Dann möchten Sie oft in der Lage sein, Ihren Code zu debuggen, also übergeben Sie auch -g
an gcc
. Sobald Sie mit Ihrem Code vertraut sind, können Sie gcc
bitten, optimierten Maschinencode mit -O2
zu erstellen. Lernen Sie, den gdb
Debugger zu verwenden.
So kompilieren Sie Ihre erste Bibliothek unter der Annahme, dass die Quelldateien first1.c
und first2.c
im Verzeichnis FirstLib/
gespeichert sind, z. B.
An diesem Punkt sollten Sie Makefile
verwenden und lernen, wie Sie make
verwenden, insbesondere, weil Sie Ihre libfirst.a
mit
Dann können Sie -L../FirstLib -lfirst
als letzte Option an den Befehl gcc
übergeben, indem Sie Ihr Programm mit Ihrem libfirst.a
Kompilieren Sie dann Ihre zweite Bibliothek, indem Sie Ihre Makefile
im Verzeichnis SecondLib/
haben, das sehr wahrscheinlich
usw. Sie möchten wirklich lernen, wie Sie make
verwenden und Ihre eigene Makefile
-s schreiben. Nehmen Sie sich also Zeit, die GNU macht Dokumentation .
Vielleicht möchten Sie -H
an gcc
übergeben, damit es Ihnen alle enthaltenen Dateien anzeigt, und Sie können auch Remake (zusätzlich & amp; Ersetzung von make
), um Ihre komplexeren Makefile
-s zu debuggen (insbesondere indem remake -x
ausgeführt wird). Hier ist ein Beispiel für Makefile
; Du wirst viele andere finden!
Lesen Sie auch das Program Library Howto .
Für eine Bibliothek, die aus vielen Dateien besteht, können Sie diese zuerst separat kompilieren und dann tun:
%Vor%Dieser Befehl bewirkt, dass die Bibliothek erstellt wird, falls sie nicht bereits existiert. Wenn dies der Fall ist, werden die O-Dateien aktualisiert (oder zu dieser Bibliothek hinzugefügt). Das ralib wird verwendet, um die Bibliothek auf eine für den Loader nützliche Weise zu randomisieren.
Wenn Sie diese Bibliothek verwenden, tun Sie Folgendes:
%Vor%Tags und Links compilation c include gcc libraries