distcc를 어떻게 설치합니까?


10

크로스 컴파일을위한 GCC 4.7 툴체인 구축 방법을 읽었습니다 . 내 RPi에서 작동하는 간단한 테스트 프로그램을 성공적으로 구축했습니다.

이를 위해서는 arm-unknown-linux-gnueabi-gcc hello.c -o hellox86 데스크탑과 scp실행 파일을 RPi에서 실행해야했습니다. 이것은 느리고 번거 롭다. 오히려 내 RPi에서 컴파일을 제어하고 싶습니다.

distcc한 컴퓨터에서 다른 컴퓨터로 컴파일을 배포하는 데 사용할 수있는 에 대해 읽었습니다 .

이것을 어떻게 설치합니까? 데비안 / 우분투 및 아치 리눅스 데스크톱과 SD 카드에 두 OS가 모두 설치되어 있습니다.


이 질문을 게시하지 않은 사람을 기다리고있었습니다. 나는 정말로 그것을하고 싶지 않았습니다. 잘 했어.
Jivings

export DISTCC_VERBOSE=1이것에 감사드립니다! 내가 내 distcc를 툴체인 debbug에 무엇을 찾고 있어요입니다

답변:


12

이 지침에서는 슬레이브에 작동하는 크로스 컴파일러가 있다고 가정합니다. 크로스 컴파일을위한 GCC 4.7 툴체인 구축 방법을 읽어보십시오 . 당신이하지 않은 경우. make마스터에 설치하는 것도 유용합니다 .

설치

먼저을 설치해야합니다 distcc. 운영 체제의 패키지 관리 시스템에서 제공하는 사전 빌드 된 패키지를 사용해야하지만 원하는 경우 소스에서 자유롭게 설치할 수 있습니다!

데비안

sudo apt-get install distcc

아치

sudo pacman -S distcc

구성

슬레이브-데비안 / 우분투

TODO : 아치와 동일합니까? 그렇지 않은 경우 아치를 어떻게 구성합니까?

의 설정을 조정해야합니다 /etc/default/distcc. 좋아하는 편집기에서 루트로여십시오. 나는 달렸다 sudo vim /etc/default/distcc.

당신은 변경해야 할 STARTDISTCC, ALLOWEDNETS하고 LISTENER. 마스터와 슬레이브가 동일한 서브넷에 있고 해당 서브넷이 있다고 가정하면이 서브넷 192.168.0.0/24을로 설정해야합니다.

STARTDISTCC="true"
ALLOWEDNETS="192.168.0.0/24"
LISTENER="0.0.0.0"

또한 컴파일러의 경로를 추가해야합니다. 다음 줄을 추가 하여이 작업을 수행했습니다.

PATH=$PATH:/home/alex/x-tools/arm-unknown-linux-gnueabi/bin

참고 슬레이브의 데몬은 distccd사용자 로 실행 되므로 실행 파일에 적절한 권한이 구성되어 있는지 확인하십시오. 나는 모든 사람에게 처형 권한을 주었다.

데몬을 실행합니다. 일반적으로 부팅시 시작됩니다.

sudo service distcc start

마스터-아치

TODO : 데비안에서도 마찬가지입니까? 그렇지 않다면 어떻게 데비안을 설정합니까?

~/.distcc/hosts자주 사용하는 텍스트 편집기에서 열고 슬레이브의 IP 주소를 추가하십시오. 내 hosts파일은 한 줄로 구성되어 192.168.0.22있습니다.

참고 고정 IP 주소를 슬레이브에 할당하는 것이 좋습니다. 그렇지 않으면 IP 주소가 변경 될 때마다이 파일을 변경해야합니다.

사용하다

모든 것이 잘되면 distcc를 아주 간단하게 사용할 수 있어야합니다. 예를 들어, 컴파일 hello.c하려면 다음 hello.o을 실행하십시오.

distcc arm-unknown-linux-gnueabi-gcc    -c -o hello.o hello.c

예 : Hello World!

2 개의 파일로 구성된 홈 디렉토리에 간단한 예를 설정했습니다.

# file: Makefile
hello.o: hello.c
hello: hello.o

# file: hello.c
#include <stdio.h>

int main() {
  printf("Hello World!\n");
  return 0;
}

Running make hello은 로컬에서 컴파일합니다. 먼저 빠른 테스트로 수행해야합니다. 기다려, 기다릴게

실행 make hello CC="distcc arm-unknown-linux-gnueabi-gcc"하면 분산 컴파일이 실행 됩니다.

참고 전처리 및 링크는 여전히 RPi에서 발생합니다.

디버깅

이것이 올바르게 작동하는 데 시간이 걸렸으며, 내가 찾은 최고의 디버깅 도구 는 간단한 환경 변수였습니다. 만약 너라면

export DISTCC_VERBOSE=1

distcc유용한 정보를 클라이언트가 출력로드됩니다.

긴 글이므로 모든 의견을 보내 주시면 감사하겠습니다. 나는 모든 단계를 기억하기를 바랍니다!


훌륭한 답변입니다. 내 RPi 개발을 위해 이것을 북마크 할 것입니다.
Jivings

@AlexChamberlain Distcc는 이제 "펌프 모드"를 지원하여 전처리도 배포 할 수 있습니다.
teraquendya 2016 년

@teraquendya 그들은 실제로, 나는 이것에 대한 세부 사항을 게시하지 않았습니다. 펌프 모드없이 모든 것을 올바르게 갖추 었는지 확인하고 싶습니다.
Alex Chamberlain
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.