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.