2009-05-26 35 views
6

Khi tôi đang biên dịch mã của mình bằng các tệp makefiles (tôi có 12 makefiles), có lỗi khi báo cho make.exe[1]: Leaving directory Error 2 lý do cho việc này là gì? Ngoài ra, "Lỗi 2 hoặc Lỗi 1" có nghĩa là gì?Rời khỏi thư mục .....?

Trả lời

8

Khi tạo bản in "Lỗi 2" trong ngữ cảnh này, điều đó có nghĩa là đã xảy ra lỗi trong lời gọi đệ quy. Bạn phải xem xét các thông báo lỗi trước thông điệp đó để xác định xem vấn đề thực sự là gì, trong phần khởi tạo. Ví dụ, cho một Makefile như thế này:

all: 
     $(MAKE) -f sub.mk 

... và một sub.mk như thế này:

all: 
     @exit 1 

Khi tôi chạy GNU thực hiện, nó in như sau:

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 cho tôi biết rằng đã xảy ra lỗi trong một số loại trong bản phụ. Tôi phải nhìn phía trên thông điệp đó, đến thông điệp Error 1 từ bản thân nó. Ở đó tôi có thể thấy rằng một số lệnh gọi trong khi cố gắng để xây dựng all thoát với mã thoát 1. Thật không có thực sự là một tiêu chuẩn xác định mã thoát cho các ứng dụng, vượt ra ngoài tầm thường "exit code 0 có nghĩa là OK". Bạn phải nhìn vào lệnh cụ thể không thành công và kiểm tra tài liệu của nó để xác định mã thoát cụ thể có nghĩa là gì.

Các thông báo lỗi này không liên quan đến các giá trị Unix errno như những người khác đã nêu. "2" ngoài cùng chỉ là mã lỗi tự tạo cho nó khi một submake có lỗi; "1" bên trong chỉ là mã thoát của lệnh không thành công. Nó có thể dễ dàng là "7" hoặc "11" hoặc "42".

Các vấn đề liên quan