makefile 병렬 대비하기
의존성을 줌으로서
병렬 빌드시 모든 파일이 준비되어야 하도록 해주어야 함
여기서 미묘한 점이 있는데 직렬 질드에서는 make 가 application 의 의존성 목록에서 왼쪽에서 오른쪽으로 작업을 시작할 것입니다. 첫번째로 ${OBJECTS} 의 모든 오브젝트들을 빌드 하고 나서 menu.o 를 빌드하는 규칙을 적용할 것입니다. 이러한 직렬 환경에서는 문제가 없습니다 왜냐하면 menu.o 가 처리될때 필요한 ${OBJECTS} 의 모든 오브젝트들은 이미 제자리에 있을 것이기 떄문입니다. 그러나 병렬 빌드에서 make 는 병렬 환경에서 모든 의존성들을 처리할 수 있으므로 menu.o 의 생성과 컴파일은 모든 오브젝트 들이 준비 되기 전에 시작 될 수 있습니다.
OBJECTS=app.o helper.o utility.o ... application: ${OBJECTS} menu.o cc -o application ${OBJECTS} menu.o # Automatically generate menu.c from the other modules menu.o: nm ${OBJECTS} | pattern_match_and_gen_code > menu.c cc -c menu.c |
application: ${OBJECTS} menu.o cc -o application ${OBJECTS} menu.o menu.o: ${OBJECTS} nm ${OBJECTS} | pattern_match_and_gen_code > menu.c cc -c menu.c |
[링크 : http://blog.syszone.co.kr/2099]
+
[링크 : http://forum.falinux.com/zbxe/index.php?document_srl=405822&]
[링크 : http://korea.gnu.org/manual/4check/make-3.77/ko/make_toc.html]