Où puis-je find une list de codes d'erreur «make»?

J'essaie de comstackr un programme écrit en Fortran en utilisant make (j'ai un Makefile et, dans le directory contenant le Makefile , je tape la command $ make target , où "target" est une spécification cible spécifique au système Makefile.Comme j'expérimente avec diverses révisions de ma spécification de cible, j'obtiens souvent une série de messages d'erreur en essayant d'appeler make.Pour donner quelques exemples:

 make[1]: Entering directory /bin/sh: line 0: test: too many arguments ./dpp angfrc.f > angfrc.tmp.f /bin/sh: ./dpp: Permission denied make[1]: *** [angfrc.o] Error 126 make[1]: Leaving directory make: *** [cmu60] Error 2 

et

 make[1]: Entering directory /bin/sh: line 0: test: too many arguments ./dpp -DSTRESS -DMPI -P -D'pointer=integer'-I/opt/mpich_intel/include angfrc.f > angfrc.tmp.f /bin/sh: ./dpp: Permission denied make[1]: *** [angfrc.o] Error 126 make[1]: Leaving directory make: *** [mpich-c2] Error 2 

et

 make[1]: Entering directory /bin/sh: line 0: test: too many arguments ./dpp -DSTRESS -DMPI -P -D'pointer=integer' -I/opt/mpich_intel/include angfrc.f > angfrc.tmp.f /bin/sh: ./dpp: Permission denied make[1]: *** [angfrc.o] Error 126 make[1]: Leaving directory make: *** [mpi-intel] Error 2 

Savez-vous comment je peux find une list de ce que les codes d'erreur, tels que "Erreur 126" et "Erreur 2", signifient? J'ai trouvé ce fil sur un autre site, mais je ne suis pas sûr de ce que la réponse signifie. Cela signifie-t-il qu'il n'y a pas de signification indépendante du système des codes d'erreur make ? Pouvez-vous m'aider, s'il vous plaît? Je vous remercie.

    Les codes d'erreur ne proviennent pas de make: make renvoie le statut de return de la command qui a échoué. Vous devez regarder la documentation de chaque command pour savoir ce que chaque valeur d'état signifie. La plupart des commands ne se soucient pas des distinctions autres que 0 = succès, tout le rest = échec.

    Dans chacun de vos exemples, ./dpp ne peut pas être exécuté. Lorsque cela se produit, le shell qui a tenté de l'appeler quitte le code d'état 126 ( comportement standard ). L'instance de make qui était en cours d'exécution, ce shell détecte une command défaillante (le shell) et quitte, affichant l' Error 126 . Cette instance de make est elle-même une command exécutée par une instance parent de make et l'utilitaire make renvoie 2 en cas d'erreur, de sorte que le parent génère des rapports Error 2 .

    L'échec de votre build est susceptible de provenir du test: too many arguments . Cela pourrait être une erreur de syntaxe dans le makefile, ou cela pourrait être dû au fait de s'appuyer sur des fonctionnalités spécifiques à bash quand vous avez un /bin/sh qui n'est pas bash. Essayez d'exécuter make SHELL=/bin/bash target ou make SHELL=/bin/ksh target ; si cela ne fonctionne pas, vous devez corriger votre makefile.

    Pour clarifier, Make renvoie toujours l'un des trois codes d'erreur, comme indiqué sur gnu.org :

    • 0: Le statut de sortie est "Réussite"
    • 2: Faire des erreurs rencontrées
    • 1: Retourne la réponse à -q (question), indiquant que les cibles doivent être mises à jour

    Vous pouvez tester cela en exécutant vos exemples ci-dessus (en supposant que vous les avez encore à partir de 2011) puis en exécutant echo $? dans le terminal pour imprimer le code de return précédent.

    Make imprime les autres codes d'erreur qu'il rencontre (comme le 126 que vous avez trouvé), mais s'il rencontre une erreur, il renverra toujours un code d'erreur de 2.