2012-04-05 5 views
0

GCC 4.7을 사용하고 C++ 코드 프로젝트를 컴파일 중입니다. 이 코드는 디렉토리에 분산 된 파일로 구성됩니다.makefile : 빠른 컴파일 방법

내가 사용하는 RHEL 서버에서 16 개의 코어가 있지만 여전히 컴파일 속도가 매우 느립니다. makefile의 가능한 대안이나 옵션을 제안 해 주시면 빨리 컴파일하는 데 도움이 될 것입니다. 나는 -j를 시도했으나 일부 ​​폴더 만 컴파일하고 중지합니다. 메인 바이너리를 컴파일하지 않습니다.

도움을 주셔서 감사합니다.

답변

5

-j으로 컴파일 할 때 메이크 파일이 실패해도 잘 작동하지 않으면 병렬 컴파일로 올바르게 작동하도록 makefile을 수정해야 할 수 있습니다. 그렇지 않으면, 다른 15 코어는 당신에게 아무 소용이 없습니다. "최종 먼저 구축 1 단계, 다음 2 단계, 다음 STEP3를 구축하는"

final: step1 step2 step3 

의미 : 경험이 적은 메이크 작가가 같은 것을 기록 할

그것은 드문 일이 아니에요. make은 각각의 종속성을 왼쪽에서 오른쪽 순서로 작성하기 때문에 기본 설정 인 -j 1을 사용하여 실행 중일 때이 방법이 유용합니다. 그러나 -j 20 (말)을 사용하면 병렬로 빌드하려고 시도합니다. 각 단계가 완료 될 때까지 기다리지 않고 즉시 3 단계를 모두 빌드하기 시작합니다.

이를 작성하는 올바른 방법은 다음과 같습니다

final: step3 
step3: step2 
step2: step1 

make 정확히 무슨 일이 일어나고 있는지 알려줍니다 final를 구축 할 수 당신이있는 당신이 step1 필요 step2을 필요로하는 step3을 구축하는 첫번째 필요.