distcc
作者 | マーティン・プール(Martin Pool)、Fergus Henderson |
---|---|
最新版 |
3.1
/ 2008年11月21日 |
最新評価版 |
N/A
/ N/A |
リポジトリ | |
プログラミング 言語 | C言語/Python |
対応OS | Unix系 |
プラットフォーム | クロスプラットフォーム |
サポート状況 | 開発中 |
種別 | コンパイラ |
ライセンス | GNU General Public License |
公式サイト | code.google.com/p/distcc |
ソフトウェア開発においてdistccとは、コンピュータネットワーク上での分散コンピューティングを利用し、ソースコードのコンパイル速度を改善するツールである。適切な設定を行えば、distccはプロジェクトのコンパイル時間を劇的に低減することが可能となる[1][2]。
このツールはC言語(また、C++、Objective-Cなどの派生言語)と連携するように、そしてGCCをそのバックエンドとして使用するよう設計されている。Intel C++ Compilerやサン・マイクロシステムズのSun Studio Compiler Suiteでの動作報告も上がっているが互換性があるとまでは言えない[3]。distccはフリーソフトウェアであり、GNU General Public Licenseのもと配布される。
設計
[編集]distccは、他のコンピュータの未使用プロセスを利用し、コンパイル速度の向上を図るよう設計されている。distccがインストールされたマシンはネットワーク経由でdistccdデーモンと、互換性のあるコンパイラをインストールしたコンピュータにソースコードを送信する[4]。
distccはコンパイラエージェントとして機能する。distccdデーモンはネットワークに接続している各マシン上で稼働させなければならない。もともと最初にdistccを走らせたマシンは、ヘッダファイルを取り扱うため、プリプロセッサを起動する。そして、(#ifdef
のような)指令文ならびにソースファイルをプリプロセスし、プリプロセスをかけたソースファイルを暗号化処理なしで、もしくはSSHを使用しTCPネットワーク経由で他のマシンに送信する。リモートマシンは受信したソースファイルを(ライブラリ、ヘッダファイル、そしてマクロなど、リンクや展開が必要なデータ等)一切のローカル環境における依存性を排除した上でオブジェクトファイルにコンパイルする。そして次々とオブジェクトファイルを送信元に送り返す[5]。
distccのバージョン3では、pump modeと呼ばれるモードをサポートしており、これは、リモートマシンへのヘッダファイルの送信をサポートしており、これにより、プリプロセス処理も分散化されている[6]。
distccにはGTK+で作成されたフロントエンドも付いており、これを利用することで、どのノードで何のソースコードがどのような処理を行っているか分かる[7]。
関連ソフトウェア
[編集]ccacheは、同一のソースコードを読み込んだ際にキャッシュされた出力結果を再利用することにより、コンパイル時間を低減することを狙ったもう一つのツールである。環境変数CCACHE_PREFIX
を使用して既にキャッシュされていない場合、 ccacheはまた分散コンパイルを実行するために、distccのバックエンドとしても利用可能である。
distccはアップルのXcode開発スイートの分散ビルド用のオプションである。
IncrediBuildはMSVC/C++コンパイラを利用する開発者向けの代替ソフトウェアである。
脚注
[編集]- ^ Laurence Bonney (2004年6月22日). “Reduce compile time with distcc” (英語). IBM. 2011年8月24日閲覧。
- ^ Laurence Bonney (2004年6月22日). “distccでコンパイル時間を削減する” (日本語). IBM. 2011年8月26日閲覧。
- ^ Martin Pool (2007年2月23日). “distcc frequently asked questions”. distcc.googlecode.com. 2009年10月19日閲覧。
- ^ Daniel Robbins (2004年2月1日). “Distcc & Distributed Computing”. Dr. Dobb's Journal. 2011年8月24日閲覧。
- ^ V. L. Simpson (2004年10月). “Speed Compiling with Distcc”. Linux Gazette. linuxgazette.net. 2011年8月25日閲覧。
- ^ 後藤大地 (2008年8月12日). “Google、distccの大幅な高速化に成功 - C/C++ビルド高速化”. マイコミジャーナル. 2011年2月2日閲覧。
- ^ “Package 'distccmon-gnome'”. screenshots.debian.net. 2011年2月3日閲覧。