
ソフトウェア開発において、distccはコンピュータネットワーク上の分散コンピューティングを利用してソースコードのコンパイルを高速化するツールです。適切な設定を行うことで、distccはプロジェクトのコンパイル時間を劇的に短縮できます。[ 2 ]
distccはCプログラミング言語(およびC++やObjective-Cなどの派生言語)で動作するように設計されており、バックエンドとしてGCCを使用しますが、 Intel C++ CompilerおよびSun MicrosystemsのSun Studio Compiler Suiteとの互換性は様々です。[ 3 ] GNU General Public Licenseの条件に基づいて配布されるdistccはフリーソフトウェアです。
distcc は、他のコンピュータの未使用の処理能力を活用することでコンパイルを高速化するように設計されています。distcc がインストールされているマシンは、コンパイル対象のコードをネットワーク経由で、distccdデーモンと互換性のあるコンパイラがインストールされているコンピュータに送信できます。[ 4 ]
distcc はコンパイラのエージェントとして機能します。参加する各マシンで distcc デーモンを実行する必要があります。送信元のマシンは、ヘッダー ファイル、プリプロセス ディレクティブ (など)、およびソース ファイルを処理するプリプロセッサを呼び出し、暗号化されていないかSSHを使用してTCP経由でネットワーク上の他のマシンにプリプロセスされたソースを送信します。リモート マシンは、ローカルの依存関係 (ライブラリ、ヘッダー ファイル、マクロ定義など) を除いたソース ファイルをオブジェクト ファイルにコンパイルし、さらにコンパイルするために送信元に送り返します。[ 5 ]#ifdef
distcc バージョン 3は、インクルードされたヘッダー ファイルをリモート マシンに送信して、前処理も分散できるようにするモード (ポンプ モードと呼ばれる) をサポートしています。
distccは、AppleのXcode開発スイートのバージョン4.3より前のバージョンでは分散ビルドのオプションとして存在していましたが、現在は削除されています。
Gomaは、Chromiumのコンパイルにおいてdistccとccacheを置き換えるためにGoogleが作成した同様のツールです。
ccacheは、同じ入力ソースファイルからの出力をキャッシュすることでコンパイル時間を短縮することを目的としたツールです。ccacheはdistccをバックエンドとして使用することもでき、CCACHE_PREFIX環境変数を使用してキャッシュされていない場合は分散コンパイルを提供します。
icecreamは、SUSEがdistccをベースに作成したものです。distccと同様に、icecreamはビルドからコンパイルジョブを受け取り、それをリモートマシンに分散させて並列ビルドを可能にします。しかし、distccとは異なり、icecreamは中央サーバーを使用して、コンパイルジョブを最も高速な空きサーバーに動的にスケジュールします。[ 6 ]