이 지침에서는 슬레이브에 작동하는 크로스 컴파일러가 있다고 가정합니다. 크로스 컴파일을위한 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
유용한 정보를 클라이언트가 출력로드됩니다.
긴 글이므로 모든 의견을 보내 주시면 감사하겠습니다. 나는 모든 단계를 기억하기를 바랍니다!