Ich habe folgendes Problem:
%Vor%Aber
%Vor% läuft gut, nm
zeigt den erwarteten Inhalt, Tests laufen, alle sind glücklich, etc.
Ich habe SO durchsucht und viele Antworten gefunden (zB Linker-Bestellung - GCC ), Es ist also klar, dass Linker so funktioniert, wie es wirklich sollte. Also, wie soll ich mein Makefile ändern, um der Reihenfolge zu folgen?
Hier ist das Makefile soweit:
%Vor%Versuchte einige seltsame und offensichtlich falsche Dinge wie rekursives Anrufen
%Vor% Wird in Debian6
unter VirtualBox auf Windows7
ausgeführt. Systemspezifikationen:
P.S. es ist von Zed Shaw's Lernen Sie den harten Weg, Übung 33 . Ich weiß nicht, ob ich es als Hausaufgabe markieren sollte:)
Sie zeigen die Makefile-Regel, die tests/list_tests
erstellt, nicht an, aber es sieht so aus, als wäre es nur die eingebaute Regel. Mit GNU Make können Sie diese Regel mit -p
ausdrucken, was Ihnen zeigt:
Wenn Sie die Bibliothek zu $(CFLAGS)
hinzufügen (über die zielspezifische Variable tests: CFLAGS+=$(TARGET)
), platzieren Sie sie vor $^
im resultierenden Befehl. Stattdessen sollten Sie es zu $(LDLIBS)
hinzufügen, damit es nach den Objektdateien angezeigt wird:
Es ist jedoch zu beachten, dass es in der Praxis nicht besonders gut ist, sich auf die Verbreitung von zielspezifischen Variablen wie diesem zu verlassen. Wenn Sie make tests
eingeben, wird die Bibliothek zum Erstellen von tests/list_tests
et al. Verwendet. Wenn Sie jedoch nur an einem Test interessiert sind, werden Sie feststellen, dass make tests/list_tests
fehlschlägt, da die Link-Bibliothek nicht im Befehl enthalten ist. (Einzelheiten finden Sie diese Antwort .)
Tags und Links c gnu-make makefile static-linking