2009-05-26 23 views
6

當我用makefiles編譯我的代碼時(我有12個makefiles)有一個錯誤,告訴 make.exe[1]: Leaving directory Error 2這是什麼原因? 另外「錯誤2或錯誤1」是什麼意思?離開目錄.....?

回答

8

當在此上下文中打印「錯誤2」時,它意味着在遞歸make調用中出現錯誤。您必須查看該消息前面的錯誤消息,以確定真正的問題是在submake中。例如,給定一個Makefile是這樣的:

all: 
     $(MAKE) -f sub.mk 

......和這樣的sub.mk:

all: 
     @exit 1 

當我運行GNU做,它打印以下內容:

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告訴我在子製作中存在某種錯誤。我必須查看該消息的上面,來自submake本身的Error 1消息。在那裏我可以看到一些命令在嘗試構建all時退出並退出代碼1.不幸的是,除了不重要的「退出代碼0意味着確定」以外,沒有一個標準爲應用程序定義退出代碼。您必須查看失敗的特定命令並檢查其文檔以確定具體的退出代碼的含義。

這些錯誤消息與其他人聲明的Unix errno值無關。最外面的「2」只是當子工程師有錯誤時自行分配的錯誤代碼;內部的「1」只是失敗命令的退出代碼。它可以很容易地是「7」或「11」或「42」。