'make'오류 코드 목록은 어디에서 찾을 수 있습니까?


26

내가 사용하는 포트란으로 작성된 프로그램을 컴파일하려면 노력하고 있어요 make(I가 가지고 Makefile을 포함하는 디렉토리에있는 동안, 그리고 Makefile을 , 나는 명령을 입력합니다 $ make target"대상"은 시스템 별 목표 사양 내에서 존재하고, Makefile을 .로 I를 타겟 사양의 다양한 개정판을 시험 해보면을 호출 할 때 종종 다양한 오류 메시지가 표시됩니다 make.

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

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

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

"오류 126"및 "오류 2"와 같은 오류 코드의 목록을 어떻게 찾을 수 있는지 알고 있습니까? 다른 웹 사이트 에서이 스레드 를 찾았 지만 회신의 의미가 확실하지 않습니다. make오류 코드 의 시스템 독립적 의미가 없음을 의미 합니까? 제발 날 좀 도와 줄 수 있니? 고맙습니다.


opussoftware.com/manual/appendices/B1.htm 에 목록이 있습니다 ...
Wilf

답변:


27

오류 코드는 make가 아닙니다. make는 실패한 명령의 반환 상태를보고합니다. 각 상태 값의 의미를 알려면 각 명령의 설명서를 참조해야합니다. 대부분의 명령은 0 = 성공, 다른 것 = 실패 이외의 차이점을 신경 쓰지 않습니다.

각 예제에서 ./dpp실행할 수 없습니다. 이 경우, 호출하려고 한 쉘은 상태 코드 126 ( 표준 동작 )으로 종료됩니다 . 해당 쉘을 실행중인 make 인스턴스는 실패한 명령 (쉘)을 감지하고 종료하여 표시합니다 Error 126. 해당 make 인스턴스는 그 자체가 make의 상위 인스턴스에 의해 실행되는 명령이며, make유틸리티는 오류시 2를 리턴하므로 상위 make 보고서를 작성합니다 Error 2.

빌드 실패는에서 비롯된 것 같습니다 test: too many arguments. 이것은 makefile의 구문 오류이거나 bash /bin/sh가 아닌 bash 특정 기능에 의존하기 때문일 수 있습니다 . 달리기 make SHELL=/bin/bash target또는 make SHELL=/bin/ksh target; 그래도 작동하지 않으면 makefile을 수정해야합니다.


14

명확히하기 위해 Make는 gnu.org에 명시된 바와 같이 항상 세 가지 오류 코드 중 하나를 반환합니다 .

  • 0 : 종료 상태가 '성공'입니다
  • 2 : 오류 발생
  • 1 : 대상을 업데이트해야 함을 나타내는 -q (질문) 플래그에 응답을 리턴합니다.

위의 예제를 실행하여 (2011 년부터 계속 사용한다고 가정) echo $?터미널에서 실행 하여 이전 리턴 코드를 인쇄하여 이를 테스트 할 수 있습니다 .

Make는 126과 같은 다른 오류 코드를 인쇄하지만 오류가 발생하면 항상 오류 코드 2를 반환합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.