Ubuntu 앱 컴파일 속도를 높이는 방법 (make, cmake, gcc)


11

여기에서 일부 프로그램을 컴파일하고 있으며 4 개의 코어가 있습니다. 방법 말할 수 있는가 make, cmake또는 gcc영향을 미치는 모든 코어 또는 뭔가를 사용하여 컴파일은?

답변:


13

패키지가이를 지원하는 경우 -j플래그를 사용하여 병렬 작업을 실행할 수 있습니다. 예 :

make -j8

이 플래그에 대한 자세한 내용은 Stackoverflow 질문에서 확인할 수 있습니다. 사용 가능한 코어 수보다 큰 수를 전달할 때 -j가 더 나은 성능을 만드는 이유는 무엇입니까? .

분산 컴파일

기계가 여러 개인 경우 distcc를 사용 하십시오. 관련 머신에서 sudo apt-get install distcc. 빌드 머신이 192.168.1.1이라고 가정하십시오.

  • 헬퍼 머신에서 다음을 실행하십시오.

    sudo distccd --log-file=/tmp/distccd.log --daemon -a 192.168.1.1
    
  • 빌드 머신에서 실행하기 전에 configure또는 cmake빌드 프로세스에 사용할 호스트를 지정해야합니다. 선택적으로 슬래시 후 동시 작업 수를 지정하십시오 (기본값은 4).

    export DISTCC_HOSTS='localhost/4 192.168.1.2/8 192.168.1.3/8'
    

    컴파일러가 distcc를 사용하게하십시오 :

    export PATH="/usr/lib/distcc:$PATH"
    

    지금 configure또는 cmake응용 프로그램 및 빌드 :

    make -j$(distcc -j)
    

    /usr/lib/distccPATH 에 두 번 넣으면 실패합니다. 에 /usr/lib/distcc한 번만 설정 하십시오 PATH.

자세한 내용은 distcc (1)distccd (1) 설명서 페이지를 참조하십시오 .


J가 좋은 OMG. 나는 1 미만 감사 L. 15 분 갔다
루이스 알바

distcc로 더 빨라질 수 있고, PHP 컴파일은 2 분 안에 이루어졌으며, 커널은 3 분 안에 완료되었습니다 (3 개의 i5 머신)
Lekensteyn

내가 일할 때 distcc로 시도 할 것입니다. 어제 이것에 대해 비슷한 질문을하고있었습니다. 아마 당신은 여기에 도움이 될 수 있습니다 askubuntu.com/questions/106810/...
루이스 알바라도에게

루트로 distccd를 실행하면 나쁜 계획처럼 보입니다. 나는 몇 가지 이유로 그것을 사용하지 않았지만 내가 할 때 그 기계에 대한 권한이 없기 때문에 루트를 사용할 수 없었습니다.
ams

@ams 루트로 실행할 필요가 없습니다. 루트로 실행하고 사용자를 전환하려면을 사용하십시오 distccd --user nobody. 그렇지 않으면 실행 한 사용자로 실행됩니다.
Lekensteyn
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.