distccをインストールするにはどうすればよいですか?


10

クロスコンパイル用のGCC 4.7ツールチェーンを構築する方法を読みました。私のRPiで動作する簡単なテストプログラムの構築に成功しました。

これを行うにはarm-unknown-linux-gnueabi-gcc hello.c -o hello、x86デスクトップとscp実行可能ファイルをRPiで実行する必要がありました。これは遅く、面倒です。RPiからコンパイルを制御したい。

について読みましたdistcc。これは、あるマシンから別のマシンにコンパイルを配布するために使用できます。

これをインストールするにはどうすればよいですか?私は、Debian / UbuntuとArch Linuxの両方のデスクトップと、両方のOSをSDカードにインストールしています。


私以外の誰かがこの質問を投稿するのを待っていました。本当にやりたくなかった。よくやった。
Jivings '27 / 06/27

export DISTCC_VERBOSE=1これをありがとう!それは私が私のdistccのツールチェーンdebbugに探しているものです

回答:


12

これらの手順では、スレーブにクロスコンパイラが動作していることを前提としています。クロスコンパイル用の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

あなたは変更する必要がありSTARTDISTCCALLOWEDNETSそして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有用な情報のクライアントの意志の出力負荷。

これは長い記事なので、フィードバックはありがたく受け取られます。すべての手順を覚えているといいのですが!


すばらしい答えです。私はこれを私のRPi開発用にブックマークします。
Jivings

@AlexChamberlain Distccが「ポンプモード」をサポートするようになり、前処理も分散できるようになりました。
teraquendya 2012年

@teraquendya彼らは確かにそうです、私はまだこれについての詳細を投稿することにしていません。最初にポンプモードなしですべてが正しく機能することを確認したいと思います。
Alex Chamberlain
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.