Wie kompiliere ich Bibliothek auf C mit GCC?

8

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:

%Vor%

und in der Datei pila_funciones_extra.c setze ich die nächste Zeile:

%Vor%

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?

    
Adrian 17.02.2013, 08:40
quelle

2 Antworten

19

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.

%Vor%

An diesem Punkt sollten Sie Makefile verwenden und lernen, wie Sie make verwenden, insbesondere, weil Sie Ihre libfirst.a mit

erhalten möchten %Vor%

Dann können Sie -L../FirstLib -lfirst als letzte Option an den Befehl gcc übergeben, indem Sie Ihr Programm mit Ihrem libfirst.a

kompilieren und verknüpfen

Kompilieren Sie dann Ihre zweite Bibliothek, indem Sie Ihre Makefile im Verzeichnis SecondLib/ haben, das sehr wahrscheinlich

enthalten sollte %Vor%

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 .

    
Basile Starynkevitch 17.02.2013 12:15
quelle
1

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%     
kdmin 17.02.2013 10:47
quelle

Tags und Links