GNU make Messages d'erreur

Erreurs Annexe B générées par Marque

Voici une liste des erreurs les plus courantes que vous pourriez voir générés par marque. et des informations sur ce qu'ils signifient et comment les corriger.

Parfois, faire des erreurs ne sont pas fatales, surtout en présence d'un - préfixe sur une ligne de recette, ou l'option de ligne de commande -k. Les erreurs fatales sont préfixés par la chaîne ***.

Les messages d'erreur sont tous soit précédés du nom du programme (généralement « faire »), ou, si l'erreur se trouve dans un makefile, le nom du fichier et le numéro de ligne contenant le problème.

Dans le tableau ci-dessous, ces préfixes communs sont laissé.

[Foo] Erreur NN ' « Description du signal [foo] »

Ces erreurs ne sont pas vraiment faire des erreurs du tout. Ils signifient qu'un programme qui font invoqué dans le cadre d'une recette renvoyé un code d'erreur non-0 ( « Erreur NN »), qui font interprète comme un échec, ou il est sorti d'une autre manière anormale (avec un signal d'un certain type). Voir les erreurs dans les recettes.

Si aucun *** est joint au message, le sous-processus échoué, mais la règle dans le makefile était préfixé avec le - caractère spécial, alors assurez-vous ignorer l'erreur.

« Séparateur manquant. Arrêtez. » « Séparateur manquant (avez-vous dire TAB au lieu de 8 places?). Arrêtez. »

Cela signifie que faire ne pouvait pas comprendre quoi que ce soit au sujet de la ligne de makefile, il suffit de lire. GNU make pour différents regards séparateurs (. =. Caractères préfixe de recettes, etc.) pour indiquer quel type de ligne, il est l'analyse syntaxique. Ce message signifie qu'il n'a pas pu trouver valide.

L'une des raisons les plus courantes pour ce message est que vous (ou peut-être votre éditeur oh-so-utile, comme cela est le cas avec de nombreux éditeurs MS-Windows) ont tenté de mettre en retrait vos lignes de recettes avec des espaces au lieu d'un caractère de tabulation. Dans ce cas, faites utilisera la deuxième forme de l'erreur ci-dessus. Rappelez-vous que chaque ligne de la recette doit commencer par un caractère de tabulation (sauf si vous définissez .RECIPEPREFIX, voir Variables spéciales). Huit espaces ne comptent pas. Voir la règle de syntaxe.

« Recette commence avant la première cible. Arrêtez. » Règle « manquante avant la recette. Arrêtez. »

Cela signifie que la première chose que dans le makefile semble faire partie d'une recette: il commence par un caractère de préfixe de recette et ne semble pas être une directive juridique marque (comme une affectation variable). Les recettes doivent toujours être associés à une cible.

« Aucune règle pour faire la cible` xxx ». » « Aucune règle pour faire la cible `xxx ',` besoin par yyy. »

« Aucun objectif définie et si aucun makefile trouvé. Arrêtez. » « Aucun objectif. Arrêtez. »

Les anciens signifie que vous n'avez pas fourni des cibles à construire sur la ligne de commande et confectionnez n'a pu trouver aucune makefiles à lire. Ce dernier signifie que certains makefile a été trouvé, mais il ne contenait aucun but par défaut et aucune n'a été donnée sur la ligne de commande. GNU make n'a rien à voir dans ces situations. Voir Arguments pour spécifier le Makefile.

« ` Xxx Makefile 'n'a pas été trouvé. » « Inclus makefile `xxx 'n'a pas été trouvé. »

Un makefile spécifié sur la ligne de commande (première forme) ou inclus (seconde forme) n'a pas été trouvé.

« Avertissement: recette pour cible` remplaçant xxx « » « avertissement: ignorant vieille recette pour cible` xxx » »

make GNU permet seulement une recette à spécifier par cible (à l'exception des règles à deux points). Si vous donnez une recette pour une cible qui a déjà été défini pour avoir un, cet avertissement est émis et la deuxième recette remplacera le premier. Voir plusieurs règles pour une cible.

« Circulaire xxx <- yyy dependency dropped. ’

références « variables récursives` xxx 'lui-même (éventuellement). Arrêtez. »

Cela signifie que vous avez défini un (récursive) normale variable make xxx qui, quand il est étendu, se référer à lui-même (xxx). Ce n'est pas autorisé; soit utiliser des variables simplement expansées ( « : = » '. = ou) ou utiliser l'opérateur append ( « + = »). Voir Comment utiliser des variables.

« Référence variable non terminée. Arrêtez. »

Cela signifie que vous avez oublié de fournir la parenthèse fermante appropriée ou une accolade dans votre référence variable ou fonction.

« Arguments insuffisants pour fonctionner` xxx ». Arrêtez. »

« Motif cible manquant. Arrêtez. » « plusieurs modèles cibles. Arrêtez. » « Ne contient pas de motif cible '% ». Arrêtez. » « règles mixtes de motifs implicites et statiques. Arrêtez. »

« Avertissement: -JN forcé dans submake: désactivation du mode jobserver. »

Cet avertissement et l'autre sont générés si make détecte les conditions d'erreur liées au traitement parallèle sur les systèmes où sous font l peuvent communiquer (voir Communication Options pour une marque sous-). Cet avertissement est généré si une invocation récurrente d'un processus make est forcé d'avoir « -j N » dans sa liste d'arguments (où N est supérieur à un). Cela pourrait se produire, par exemple, si vous définissez la variable d'environnement MAKE à « faire -j2 ». Dans ce cas, la marque sous ne communique pas avec d'autres processus de maquillage et tout simplement prétendre qu'il a deux emplois de lui-même.

« Avertissement: jobserver indisponible: l'utilisation -j1. Ajouter `+ » pour parent se règle. »

Pour les processus de maquillage pour communiquer, le parent transmettre des informations à l'enfant. Étant donné que cela pourrait entraîner des problèmes si le processus enfant n'est pas en fait une marque. le parent ne le fera si elle pense que l'enfant est une marque. Le parent utilise les algorithmes normaux pour déterminer ce (voir comment les travaux variables MAKE). Si le makefile est construit de telle sorte que le parent ne sait pas que l'enfant est un processus de faire, l'enfant recevra seulement une partie des informations nécessaires. Dans ce cas, l'enfant va générer ce message d'avertissement et procéder à sa construction de manière séquentielle.

Articles Liés