[makefile] 실행 프로그램 성공시에 0 리턴
Makefile에서 동작하는 실행 프로그램은 성공시에 0을 return 해야 한다.
특히나 C 코드에 해당될 듯.. c 코드의 main 함수가 성공했을 때는 return 0을 하도록 한다.
0 이외의 값을 return하면 make에서 해당 프로그램이 정상 동작하지 않은 것으로 판단한다.
즉, 실행 오류로 판단하고, make 실행을 중지한다.
이거 정말 잡기도 쉽지 않고 난감한 부분이다. make가 잘못되었는지 확인하는데.. 그게 아니다.
하둡에서도 동일하게 동작한다.
즉, 성공시에 0을 리턴해야 hadoop에서 성공한 것으로 판단한다.
0이 아닌 다른 값을 리턴하면 오류로 판단한다.
ls, rm 등의 리눅스 프로그램도 프로그램이 성공한 경우에는 0을 리턴한다.
셀 스크립트를 만들고, 이 스크립트를 make에서 사용할 때도 동일하게 주의해야 한다.
셀 스크립트에서 사용하는 리눅스 명령이 실패했더라도, 해당 셀 스크립트는 성공했다고 볼 수 있는 경우가 문제가 되는데..
이 경우에는 해당 셀 스크립트의 마지막에 exit 0을 추가해두면 된다. (bash script인 경우)
*****************************
다음 Makefile에서 test_exec가 c 코드의 실행 파일인 경우..
- test_exec의 main 함수가 성공하면 0을 리턴해야 한다.
.PHONY: all
all: output.txt
output.txt: input.txt
test_exec $^ > $@
댓글