Ich weiß, dass dieser Fehler zu Tode geprügelt wurde, aber ich kann es nicht funktionieren lassen. Ich habe mein Makefile unten verlinkt:
%Vor%Wenn ich einen Befehl wie "make gensine" ausführen, werde ich mit dem folgenden Ergebnis zurückgegeben:
%Vor%Nach dem Lesen heißt das undefinierten Hinweis auf Sünde, die mit der Mathematik-Bibliothek ist. Die aufgeführten Funktionen befinden sich in der Datei "encode.c", die in der Datei "gensine.c" enthalten sind.
Der Befehl im Makefile:
%Vor%stimmt nicht mit dem Befehl überein, den Sie am Ende gedruckt haben:
%Vor% Beachten Sie auch, dass es kein -lm
Beachten Sie, dass make
weiß, wie man Objektdateien erstellt, so dass Sie das Makefile am meisten benötigen. Versuchen Sie es (denken Sie daran, mit TABs einzurücken):
Bearbeiten:
Boddie, beachten Sie, dass Ihre Verwirrung entstanden ist, weil Sie dachten, dass das Makefile ein Skript war - dh. dass Sie Ihr Skript mit dem Namen make
ausgeführt haben, als Sie make gensine
eingegeben haben. Tatsächlich ist make
ein Befehl wie gcc
irgendwo anders im Dateisystem (unter Linux usw., geben Sie which make
ein, um zu sehen, wo es ist). Der make
-Befehl erwartet eine Eingabedatei, die Build-Regeln namens makefile
oder Makefile
im aktuellen Verzeichnis enthält. Wenn es diese Datei nicht findet, verwendet es stattdessen einige eingebaute Regeln - daher der cc gensine.c -o gensine
, der nirgends in Ihrem Makefile ist. Wenn Sie möchten, können Sie make
den Namen des Makefiles (so dass es nicht die Standardnamen verwendet) mit dem Schalter -f
mitteilen, wie @DanielFischer in den Kommentaren beschrieben.