Libraries im Makefile

Gast #236925
Hey, folgendes Problem, wenn ich im Makefile noch auf ne zusätzliche
Library verweise mit LIB = ..\lib\gggt.c dann wird diese nicht mit
eingebunden wie es sein sollte. wo ist das problem ? die gggt.c liegt
da wo sie sein sollte, alles wunderbar, nur auftauchen tut sie nicht
beim compilen.

Gruß, Phozz
Gast #236928
Nö, genau das ist es nicht. Wenn Deine zusätzlichen Funktionen einfach
in einem zweiten Sourcefile drinstehen, dann musst Du das so behandeln
wie ein zweites Sourcefile.
Gast #236929
Hi

das was du der Variablen LIB zuweißt wird höchstwahrscheinlich beim
Linken dem Compiler übergeben. Da steht dann also sowas wie

$(LD) $(LDFLAGS) -o$(BIN).elf $^ -l$(LIB)

Der (GNU)Linker kann aber nichts mit C-Dateien anfangen. Der braucht
entweder *.o oder eben Bibliotheken (*.a) die er dann per -l bekommt.
Du machst also mit dem GCC aus deiner *.c eine *.o (gcc -c ... gggt.c)
eine Objektdatei ggt.o. Aus dieser dann mit dem Libtool AR eine
Bibliothek (gggt.a). Und genau diese übergibst du dann mit der
LIB-Variablen an den Linker.

Matthias

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 21 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.