-lm Math-Bibliothek nicht in Makefile verknüpfen

8

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.

    
boddie 10.11.2012, 22:34
quelle

1 Antwort

11

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

gibt

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):

%Vor%

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.

    
William Morris 10.11.2012, 23:04
quelle

Tags und Links