"make" 오류 코드 목록은 어디서 찾을 수 있나요?

"make" 오류 코드 목록은 어디서 찾을 수 있나요?

Fortran 언어를 사용하여 프로그램을 작성하려고 합니다 make.파일 생성그리고 다음을 포함하는 디렉토리에서파일 생성$ make target, "target"은 내 시스템에 존재하는 시스템별 대상 사양인 명령을 입력합니다.파일 생성. 대상 사양의 다양한 개정판을 시도했을 때 몇 가지 예를 호출하려고 했습니다 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

"Error 126" 및 "Error 2"와 같은 오류 코드의 의미 목록을 찾는 방법을 알고 계십니까? 내가 찾은이 스레드다른 사이트에서는 답글이 무슨 뜻인지 모르겠습니다. 이는 오류 코드에 시스템 독립적인 의미가 없다는 의미입니까 make? 도와주세요? 감사해요.

답변1

오류 코드는 make에서 나온 것이 아닙니다. make가 실패한 명령의 반환 상태를 보고합니다. 각 상태 값의 의미를 이해하려면 각 명령에 대한 설명서를 확인해야 합니다. 대부분의 명령은 0 = 성공, 그 밖의 모든 것 = 실패를 제외하고 차이점에 대해 신경 쓰지 않습니다.

각 예제에서 ./dpp실행이 실패합니다. 이런 일이 발생하면 이를 호출하려는 셸은 상태 코드 126으로 종료됩니다(이는표준 행동). 쉘이 실행 중인 make 인스턴스는 실패한 명령(쉘)을 감지하고 종료되어 Error 126make 인스턴스 자체가 make의 상위 인스턴스에 의해 실행되는 명령이고 make유틸리티는 오류 시 2를 반환하므로 상위 make가 보고합니다 Error 2.

빌드 실패는 makefile의 구문 오류일 수도 있고 test: too many arguments파일이 bash가 아닐 때 /bin/shbash 특정 기능에 의존하기 때문일 수도 있습니다. 실행해 보세요 make SHELL=/bin/bash target. make SHELL=/bin/ksh target그래도 작동하지 않으면 makefile을 수정해야 합니다.

답변2

명확히 하기 위해 Make는 항상 다음과 같은 세 가지 오류 코드 중 하나를 반환합니다.gnu.org:

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

위의 예제를 실행하고(아직 2011 예제가 있다고 가정) echo $?터미널에서 실행하여 이전 반환 코드를 인쇄하여 이를 테스트할 수 있습니다.

Make는 발견한 다른 오류 코드(예: 발견한 126)를 인쇄하지만, 오류가 발생하면 항상 오류 코드 2를 반환합니다.

관련 정보