GNU make Fehlermeldungen

Anhang B Fehler, die durch Make generiert

Hier ist eine Liste der häufigsten Fehler, die Sie von make erzeugt sehen könnte. und einige Informationen über das, was sie bedeuten und wie sie zu beheben.

Manchmal Fehler machen, sind nicht tödlich, vor allem in Gegenwart eines - prefix auf einer Rezeptzeile oder die -k Befehlszeilenoption. Fehler, die tödlich sind, werden mit der Zeichenfolge voran ***.

Fehlermeldungen werden alle entweder mit dem Namen des Programms (in der Regel ‚make‘) vorangestellt, oder, wenn der Fehler in einer Make-Datei gefunden wird, den Name der Datei und die Zeilennummer mit dem Problem.

In der folgenden Tabelle werden diese gemeinsamen Präfixe aufhörte.

‚[Foo] Fehler NN‘ ‚[foo] -Signals description‘

Diese Fehler werden nicht wirklich Fehler machen überhaupt. Sie bedeuten, dass ein Programm, das als Teil eines Rezepts aufgerufen Führe einen nicht-0-Fehlercode zurückgegeben ( ‚Error NN‘), die interpretiert als Ausfall zu machen, oder es verließ, in einer anderen anormalen Mode (mit einem Signal von einem gewissen Typ). Siehe Fehler in den Rezepten.

Wenn keine *** an die Nachricht angehängt wird, dann wird der Teilprozess gescheitert, aber die Regel in der Make-Datei wurde mit dem Präfix der - Sonderzeichen, so dass der Fehler ignoriert werden.

‚Fehlende Trennzeichen. Halt. ‚Fehlende Trennzeichen‘ (Meinen Sie TAB anstelle von 8 Leerzeichen?). Halt. ‘

Das bedeutet, dass machen nicht so gut wie nichts über die Make-Datei Linie verstehen konnte es nur lesen. GNU make Looks für verschiedene Separatoren (. =. Rezept Präfix Zeichen, etc.), um anzuzeigen, welche Art von Linie Parsen es. Diese Meldung bedeutet, dass es keine gültigen finden konnte.

Einer der häufigsten Gründe für diese Nachricht ist, dass Sie (oder vielleicht Ihre ach so hilfreich Editor, wie es der Fall mit vielen MS-Windows-Editoren) haben versucht, Ihre Rezeptzeilen mit Leerzeichen anstelle eines Tab-Zeichen einrücken. In diesem Fall wird verwenden, um die zweite Form des Fehlers oben. Denken Sie daran, dass jede Zeile in der Rezeptur mit einem Tab-Zeichen beginnen muss (es sei denn, Sie .RECIPEPREFIX gesetzt, siehe Spezielle Variablen). Acht Räume zählen nicht. Siehe Regelsyntax.

‚Rezept beginnt vor dem ersten Ziel. Halt. ‘‚Fehlt Regel vor Rezepte. Halt. ‘

Das bedeutet, das erste, was in der Make-Datei Teil eines Rezepts zu sein scheint: es mit einem Rezept Präfixzeichen beginnt und scheint keine rechtliche Make-Richtlinie (wie zum Beispiel eine variable Zuordnung) zu sein. Rezepte müssen immer mit einem Ziel zugeordnet werden.

‚Keine Regel zu Ziel machen` xxx‘. ‘‚Kein Regelziel zu machen `xxx‚ benötigt von `yyy‘. ‘

‚Keine Ziele angegeben und keine Make-Datei gefunden. Halt. ‘‚Keine Ziele. Halt. ‘

Ersteres bedeutet, dass Sie alle Ziele nicht vorsah auf der Kommandozeile gebaut werden, und machen konnten keine Makefiles finden in lesen. Letzteres bedeutet, dass einige Make-Datei gefunden wurde, aber es hat keine Standard-Ziel zu enthalten und es wurde keiner auf der Kommandozeile angegeben. GNU make hat nichts in diesen Situationen zu tun. Siehe Argumente des Makefile angeben.

‚Makefile` xxx 'wurde nicht gefunden. ‘‚Inklusive Make-Datei `xxx 'wurde nicht gefunden. ‘

Eine Make-Datei auf der Befehlszeile (erste Form), oder enthält (zweite Form) angegeben wurde nicht gefunden.

‚Warnung: zwingendes Rezept für Ziel` xxx ‚‘ ‚Warnung: ignoriert altes Rezept für Ziel` xxx‘‘

GNU make erlaubt nur ein Rezept pro Ziel angegeben werden (mit Ausnahme der zwei Kolon-Regeln). Wenn Sie ein Rezept für ein Ziel geben, die bereits definiert wurden, einen zu haben, wird diese Warnung ausgegeben und das zweite Rezept wird die erste überschreibt. Siehe Mehrere Regeln für ein Ziel.

‚Circular xxx <- yyy dependency dropped. ’

‚Rekursive Variable` xxx 'Referenzen selbst (schließlich). Halt. ‘

Dies bedeutet, dass Sie einen normalen (rekursiv) definiert haben, macht Variable xxx, das, wenn es erweitert, auf mich selbst verweisen wird (xxx). Dies ist nicht zulässig; entweder verwendet einfach schäumten Variablen ( ‚: =‘ ‚=‘ oder) oder append Operator ( ‚+ =‘). Finden Sie unter Variablen verwenden.

‚Unterminated variable Referenz. Halt. ‘

Dies bedeutet, dass Sie die richtige schließende Klammer oder Klammer in Ihren Variable oder Funktionsreferenz zur Verfügung zu stellen vergessen.

‚Nicht genügend Argumente funktionieren` xxx‘. Halt. ‘

‚Fehlende Zielmuster. Halt. ‘‚Mehrere Zielmuster. Halt. ‘‚Zielmuster kein `% enthält‘. Halt. ‘‚Gemischt implizite und statische Muster Regeln. Halt. ‘

‚Warnung: -JN in submake gezwungen: Deaktivieren Job Server-Modus. ‘

Diese Warnung und die nächste erzeugt werden, wenn Make Parallelverarbeitung auf Systeme bezogenen Fehlerbedingungen detektiert, wobei s (siehe Kommunizieren Optionen auf einen Sub- MAKE) kommunizieren machen sub-. Diese Warnung wird erzeugt, wenn ein rekursiver Aufruf eines make Prozess gezwungen ist, ‚-j N‘ in der Argumentliste zu haben (wobei N größer als eins ist). Dies könnte geschehen, zum Beispiel, wenn Sie den MAKE-Umgebungsvariable auf ‚macht -j2‘ gesetzt. In diesem Fall wird die Unter Marke nicht mit anderen Make-Prozessen kommunizieren und einfach so tun, als es zwei Arbeitsplätze seines eigenen hat.

‚Warnung: Job Server nicht verfügbar: mit -j1. In `+‘ Mutter Regel machen. ‘

Um Prozesse machen, um zu kommunizieren, werden die Eltern Informationen an das Kind weitergeben. Da dies könnte zu Problemen führen, wenn das Kind Prozess nicht wirklich ein make ist. die Mutter wird dies nur tun, wenn es das Kind ist ein Make denkt. Die Mutter verwendet die normalen Algorithmen, dies zu bestimmen (siehe Wie die MAKE Variable Works). Wenn die Make-Datei so aufgebaut ist, dass die Eltern das Kind nicht wissen, ein Make-Prozess ist, dann wird das Kind nur einen Teil der notwendigen Informationen erhalten. In diesem Fall wird das Kind diese Warnmeldung erzeugt und geht mit ihrem Build in sequentieller Weise.

In Verbindung stehende Artikel