これらの手順では、スレーブにクロスコンパイラが動作していることを前提としています。クロスコンパイル用のGCC 4.7ツールチェーンを構築する方法をお読みください。していない場合。make
マスターにインストールしておくと便利です。
取り付け
まず、をインストールする必要がありdistcc
ます。オペレーティングシステムのパッケージ管理システムによって提供されるビルド済みパッケージを使用しますが、必要に応じてソースから自由にインストールできます。
Debian
sudo apt-get install distcc
アーチ
sudo pacman -S distcc
構成
スレーブ-Debian / Ubuntu
TODO:これはArchでも同じですか?そうでない場合、どのようにArchを設定しますか?
の設定を調整する必要があります/etc/default/distcc
。お気に入りのエディターで、rootとして開きます。走りました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:これはDebianでも同じですか?そうでない場合、どのようにDebianを構成しますか?
~/.distcc/hosts
お気に入りのテキストエディターで開き、スレーブのIPアドレスを追加します。私のhosts
ファイルは1行で構成されていました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;
}
実行make hello
するとローカルでコンパイルされます。最初に簡単なテストとしてこれを行う必要があります。さあ、待ちます。
実行make hello CC="distcc arm-unknown-linux-gnueabi-gcc"
すると、分散コンパイルが実行されます。
注前処理とリンクは、RPiで引き続き行われます。
デバッグ中
これが正しく機能するまでに少し時間がかかりました。そして、私が見つけた最良のデバッグツールは単純な環境変数でした。もし、あんたが
export DISTCC_VERBOSE=1
distcc
有用な情報のクライアントの意志の出力負荷。
これは長い記事なので、フィードバックはありがたく受け取られます。すべての手順を覚えているといいのですが!