병렬 컴파일이 가능하기 위해서는 프로그래머가 Makefile을 작성하는 단계에서부터 아래와 같은 사항들을 염두에 두어야 한다.

첫째, 각각의 job이 가장 작은 단위로 생성될 수 있도록 고려해야만 한다. 일반적으로 각각의 job이 하나의 소스파일만을 컴파일하도록 하면 될 것이다.

둘째, 전체 빌드의 서브 단계들의 순서를 명확히 명시해 주어야 한다. 예를 들면, 오브젝트 파일이 모두 생성된 이후에 링킹이 이루어 져야하기 때문에, 이 경우에 일단 오브젝트 파일 생성 단계와 링킹 단계를 구분한 후에 그 순서를 규정해 주어야 한다. 아래의 '잘못된 예'는 'make'와 같이 job을 하나씩 처리할 때는 문제가 없지만, 'make -j 4' 와 같이 여러개의 job을 동시에 처리할 때는 오브젝트 파일 생성과 링킹 작업을 동시에 하려고 시도함으로써 빌드가 실패하는 경우이다.

 잘못된 예
 올바른 예
 # in Makefile

all : obj app

obj :
        gcc -c test.c
app :
        gcc -o test test.o
 # in Makefile

all : app

obj :
        gcc -c test.c
app : obj
        gcc -o test test.o

'Resources > Documents' 카테고리의 다른 글

coord-0.4 tutorial  (0) 2009.12.21
[gcc 옵션 분석: 사용 예시] -MD, -MT, -MF, -MP  (0) 2009.12.09
[gcc 옵션 분석] gcc -M options  (4) 2009.12.09
: