Выход из каталога .....? - PullRequest
6 голосов
/ 26 мая 2009

Когда я компилирую свой код с помощью make-файлов (у меня есть 12 make-файлов), появляется сообщение об ошибке make.exe[1]: Leaving directory Error 2 в чем причина этого? Кроме того, что означает «Ошибка 2 или Ошибка 1»?

1 Ответ

8 голосов
/ 26 мая 2009

Когда make печатает «Ошибка 2» в этом контексте, это просто означает, что произошла ошибка в рекурсивном вызове make. Вы должны посмотреть на сообщения об ошибках, предшествующих этому сообщению, чтобы определить реальную проблему в субмаке. Например, для данного файла Makefile:

all:
        $(MAKE) -f sub.mk

... и подобный sub.mk:

all:
        @exit 1

Когда я запускаю GNU make, он печатает следующее:

gmake -f sub.mk
gmake[1]: Entering directory `/tmp/foo'
gmake[1]: *** [all] Error 1
gmake[1]: Leaving directory `/tmp/foo'
gmake: *** [all] Error 2

Error 2 говорит мне, что в субмаке произошла какая-то ошибка. Я должен посмотреть выше этого сообщения на сообщение Error 1 от самого субмаки. Там я вижу, что некоторые команды, вызываемые при попытке построить all, завершаются с кодом выхода 1. К сожалению, на самом деле не существует стандарта, определяющего коды выхода для приложений, кроме тривиального «код выхода 0 означает ОК». Вы должны посмотреть на конкретную команду, которая потерпела неудачу, и проверить ее документацию, чтобы определить, что означает конкретный код завершения.

Эти сообщения об ошибках не имеют ничего общего со значениями Unix errno, как утверждали другие. Самая внешняя «2» - это просто код ошибки, который сам присваивается, когда субмаки имеют ошибку; внутренняя «1» - это просто код завершения неудачной команды. С таким же успехом это может быть «7», «11» или «42».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...