英語フランス語スペイン語

Ad


OnWorksファビコン

distcc - クラウドでオンライン

Ubuntu Online、Fedora Online、Windows オンライン エミュレーター、または MAC OS オンライン エミュレーター上の OnWorks 無料ホスティング プロバイダーで distcc を実行します。

これは、Ubuntu Online、Fedora Online、Windows オンライン エミュレーター、または MAC OS オンライン エミュレーターなどの複数の無料オンライン ワークステーションの XNUMX つを使用して、OnWorks 無料ホスティング プロバイダーで実行できるコマンド distcc です。

プログラム:

NAME


distcc - distcc-pump 拡張機能を備えた分散 C/C++/ObjC コンパイラ

SYNOPSIS


距離 [コンパイラ オプション]

距離 [コンパイラ オプション]

[コンパイラ オプション]

距離 [DISTCC] オプション]

DESCRIPTION


distcc は、C コードのコンパイルをネットワーク上の複数のマシンに分散します。 distcc
ローカルコンパイルと常に同じ結果を生成する必要があり、インストールとインストールが簡単です。
を使用すると、多くの場合、ローカル コンパイルよりもはるかに高速になります。

このバージョンには、プレーンな distcc に加えて、ポンプ モードまたは
distcc-ポンプ。

ジョブごとに、プレーン モードの distcc は完全な前処理されたソース コードを送信し、
コンパイラ引数は、クライアントからコンパイル サーバーまでネットワークを介して送信されます。ポンプ内
モードでは、distcc はソース コードと再帰的にインクルードされたヘッダー ファイル (これらを除く) を送信します。
デフォルトのシステムヘッダーディレクトリから)、前処理とコンパイルの両方が
コンパイル サーバー上で実行できます。これにより、コンピレーションの配信が高速化されます。
単純な distcc よりも最大で XNUMX 桁大きくなります。

コンパイルはクライアント マシン (通常は開発者のワークステーション) によって行われます。
またはラップトップ。 distcc クライアントは、プリプロセッサの make と同様に、このマシン上で実行されます (
distcc のポンプ モードは使用されません)、リンカー、およびビルド プロセスの他の段階で使用されます。どれでも
多数のボランティア マシンがコンパイル サーバーとして機能し、クライアントのビルドを支援します。
プログラムを実行して、 distccd(1) 必要に応じて、デーモン、C コンパイラ、およびアセンブラを使用します。

distcc は、TCP ソケット (デフォルトではポート 3632) またはトンネル経由で実行できます。
などのコマンド ssh(1)。 TCP 接続の場合、ボランティアは distccd(1)デーモン
直接または inetd から。 SSH 接続の場合、distccd をインストールする必要がありますが、
接続をリッスンしています。

ユーザーが存在しないため、TCP 接続は安全なネットワークでのみ使用する必要があります。
ソースコードまたはオブジェクトコードの認証または保護。 SSH 接続は通常 25%
暗号化のためのプロセッサーのオーバーヘッドにより遅くなりますが、これは大きく異なる可能性があります
CPU、ネットワーク、構築されるプログラムによって異なります。

distcc は GNU Make で使用することを目的としています。 -j 複数のコンパイラを実行するオプション
同時に処理します。 distcc は、ローカル CPU とリモート CPU の両方にジョブを分散します。
distcc はほとんどの作業をネットワーク全体に分散できるため、
ローカル ビルドよりも同時実行レベルを使用できます。経験則として、 -j
利用可能なサーバー CPU の総数の約 XNUMX 倍に設定する必要がありますが、
クライアントの制限。この設定により、ブロックされているタスクの最大限のインターリーブが可能になります。
ディスクまたはネットワーク IO を待っています。 distcc は他のビルド コントロールとも連携できることに注意してください
SCons などのツールでは、同様の同時実行設定を調整する必要があります。

  -j 設定、特に大きな値の場合 -NS、 CPU 負荷を考慮する必要があります
クライアント。クライアントの負荷を軽減するには、追加の対策が必要になる場合があります。例えば、
同時リンクは補助ロックを使用して大幅に削減する必要があります。の効果
混合コードをビルドするときの Java コンパイルなどの他のビルド アクティビティは、次のようにする必要があります。
考慮された。の --localslots_cpp パラメータはデフォルトで 16 に設定されています。これにより、
プレーン distcc (非ポンプ) モードで前処理を行う同時プロセスの数。
したがって、より大きな -j 16 よりも大きい値は、単一 CPU クライアントに過負荷をかけることなく使用できます。
前処理のせいで。このように大きな値を指定すると、ビルドの速度が上がらない部分が高速化される可能性があります。
C コンパイルが必要ですが、プレーン モードでの distcc の効率には役立たない可能性があります。

対照的に、ポンプ モードを使用し、たとえば 40 台のサーバーを使用すると、 -j80 またはそれ以上の可能性があります
シングル CPU クライアントにも適しています。

すべてのマシンに同じバージョンのコンパイラをインストールすることを強くお勧めします。
ビルドに参加しています。互換性のないコンパイラは、不可解なコンパイルまたはリンクを引き起こす可能性があります
失敗

クイックスタート


1 マシンごとに、distcc をダウンロードし、解凍してインストールします。

2 各サーバーで次のコマンドを実行します。 distccd - デーモン   - 許可する 制限するオプション
アクセス。

3 環境内のサーバーの名前を入力します。
$ export DISTCC_HOSTS='ローカルホスト 赤 緑 青'

4 建てよう!
$ make -j8 CC=distcc

クイックスタート FOR DISTCC-ポンプ モード


上記と同様に続行しますが、ステップ 3 で、リモート ホストが次の負荷を担うことを指定します。
前処理と、ネットワーク経由で送信されるファイルを圧縮する必要があることを示します。

$ export DISTCC_HOSTS='--ローカルホストをランダム化 red,cpp,lzo green,cpp,lzo
青、cpp、lzo'

  -ランダム化 オプションは、コンパイル サーバーの均一な使用を強制します。あなたが得る間
少数のサーバーのみを使用した distcc のポンプ モードからはある程度のメリットが得られ、さらに多くのメリットが得られます
さらに多くのサーバー CPU (最大数百!)。ビルドをポンプ コマンド内にラップします。
ここでは 10 台のサーバーを想定しています:

$ distcc-pump make -j20 CC=distcc

HOW プレーン (ノンポンプ) DISTCC WORKS


distcc はコンパイラとアセンブラをリモートでのみ実行します。プレーンな distcc では、
プリプロセッサは、さまざまなヘッダー ファイルにアクセスする必要があるため、常にローカルで実行する必要があります。
ローカル マシンはボランティア上に存在しないか、同じではない可能性があります。の
リンカも同様にライブラリとオブジェクト ファイルを調べる必要があるため、ローカルで実行する必要があります。

コンパイラとアセンブラは単一の入力ファイル (前処理されたソース) のみを受け取り、
単一の出力 (オブジェクト ファイル) を生成します。 distcc はこれら XNUMX つのファイルを
ネットワークに接続できるため、コンパイラ/アセンブラをリモートで実行できます。

幸いなことに、ほとんどのプログラムを実行する場合、プリプロセッサは比較的安価であり、
リンカーが呼び出される頻度は比較的低いため、ほとんどの作業は分散できます。

distcc はコマンド ラインを調べて、これらのフェーズのどれが呼び出されているかを判断します。
ジョブを分散できるかどうか。

HOW DISTCC-ポンプ モード WORKS


ポンプ モードでは、distcc はプリプロセッサをリモートでも実行します。そのためには、プリプロセッサは次のことを行う必要があります。
ローカルで実行されていた場合にアクセスするすべてのファイルにアクセスできます。で
したがって、ポンプ モードでは、distcc は再帰的に含まれるヘッダーをすべて収集します。
これらはデフォルトのシステムヘッダーであり、ソースファイルとともに送信されます。
コンパイルサーバー。

distcc-pump モードでは、サーバーはすべてのソース ファイルのセットを一時ファイルに解凍します。
ディレクトリには、ファイル システムの一部をミラーリングするディレクトリ ツリーが含まれます。
シンボリック リンクを含む前処理に関連します。

次に、コンパイラは、ファイルに対応する一時ディレクトリ内のパスから実行されます。
クライアント上の現在の作業ディレクトリ。何百ものファイルを検索して送信するには
これらは単一のコンパイルの一部であることが多く、ポンプ モードではインクリメンタル インクルードが使用されます。
分析アルゴリズム。インクルード サーバーは、これを実装する Python プログラムです。
アルゴリズム。 distcc-pump コマンドはインクルード サーバーを起動し、ビルド全体を通じて
distcc コマンドによるインクルード クエリに応答できます。

インクルードサーバーはマクロ言語の静的分析を使用して条件付きを処理します。
コンパイルと計算されたインクルード。これは、特定のヘッダー ファイルが
インクルードについてはすでに分析されていますが、すべてのインクルードが分析されている場合は、再度分析する必要はありません。
オプション (-I) は (他の条件とともに) 変更されません。

大規模なビルドの場合、ヘッダー ファイルは平均してそれぞれ数百回インクルードされます。と
distcc-pump モードでは、そのような各ファイルは数回、おそらく XNUMX 回だけ分析されます。
何百回も前処理されることになります。また、各ソースまたはヘッダー ファイルは、
インクルードサーバーが圧縮ファイルをメモ化するため、圧縮は XNUMX 回だけ行われます。として
その結果、コンパイルの準備にかかる時間が最大で XNUMX 桁減少する可能性があります。
プレーンな distcc の前処理を上回ります。

ポンプ モードの distcc は最大約 XNUMX 倍の速度でファイルをプッシュできるため、ビルド
大規模なビルドでは、プレーンな distcc モードと比較して速度が 3 倍以上増加する可能性があります。

制限事項 FOR PUMP モード


ポンプ モードを使用するには、クライアントとサーバーの両方で distcc リリース 3.0 以降を使用する必要があります。
distccd (それぞれ)。

distc-pump モードのインクリメンタル インクルード分析は、基本的な前提に基づいています。
ソース ファイルとヘッダー ファイルはビルド プロセス中に変更されないこと。いくつかの複雑なビルド
Linux カーネル 2.6 などのシステムは、この要件を完全には満たしていません。に
このような問題や、インクルード内の絶対ファイルパスなどのその他の特殊なケースを克服するには、を参照してください。
  インクルードサーバー(1) マニュアルページ。

もう XNUMX つの重要な前提条件は、すべてのマシンのインクルード構成が次のとおりである必要があるということです。
同一。したがって、デフォルトのシステムパスの下のヘッダーはすべてのサーバーで同じである必要があります。
そしてすべてのクライアント。標準の GNU コンパイラ インストールを使用する場合、この要件は
ヘッダー ファイルがインストールされているすべてのライブラリに適用されます。 / usr / include or
/usr/local/include/。 ソフトウェア パッケージをインストールすると、多くの場合、追加のエラーが発生することに注意してください。
ヘッダー ファイルはいずれかのサブディレクトリに配置されます。

この仮定が当てはまらない場合は、distcc-pump でビルドを中断する可能性があります。
モード、またはさらに悪いことに、警告なしに間違った結果が得られることがあります。現在この状態ではありません
検証済みであり、この問題に対処するための TODO リストに記載されています。

インクルード設定が同一であることを保証する簡単な方法は、クロス
のディレクトリに制限されたデフォルトのシステム検索パスを定義するコンパイラ
コンパイラのインストール。

ジョブの設定方法については、 インクルードサーバー(1) 違反の症状と原因について詳しく説明したマニュアル
distcc-pump モードの想定。

オプション 概要


distcc に渡されるほとんどのオプションは、コンパイラ オプションとして解釈されます。以下のオプション
distcc 自体によって理解されます。これらのオプションのいずれかが指定されている場合、distcc は
コンパイラを起動します。

- 助けて 概要の説明を表示します。

- バージョン
distcc クライアントのバージョンを表示します。

--show-hosts
distcc が使用するホストのリストを表示します。 「ホストの仕様」セクションを参照してください。

--scan-includes
distcc がリモート マシンに送信するファイルのリストを次のように表示します。
インクルードサーバーによって計算されます。これは、
C コンパイラによって読み取られるファイル。このオプションはポンプ モードでのみ機能します。
この計算方法の詳細については、「Distcc-pump モードの仕組み」セクションを参照してください。

によって出力されたリスト 距離 --scan-includes XNUMX 行に XNUMX つのエントリが含まれます。それぞれ
行にはカテゴリとそれに続くパスが含まれています。カテゴリは、FILE、SYMLINK、
ディレクトリまたは SYSTEMDIR:

FILE distcc サーバーに送信されるソース ファイルまたはヘッダー ファイルを示します
ホスト。

シンボリックリンク distcc サーバー ホストに送信されるシンボリック リンクを示します。

DIRECTORY ソースをコンパイルするために必要となる可能性のあるディレクトリを示します
ファイル。たとえば、ディレクトリ「foo」は、
#include "foo/../bar.h" を形成します。このようなディレクトリは distcc 上に作成されます。
サーバーホスト。

システムディレクトリ システムインクルードディレクトリ、つまり、
コンパイラのデフォルトのインクルード パス (例: "/ usr / include"; そのようなディレクトリは
distcc サーバー ホスト上に存在すると想定されるため、
distcc サーバーのホスト。

-j ホストリストから計算された distcc の同時実行レベルを表示します。それは
このクライアントによってすべてのサーバーに発行された未処理のジョブの最大数。による
デフォルトでは、これはホスト リスト内のホスト数の XNUMX 倍になります。
/LIMIT オプションがホスト リストで使用されました。 「ホストの仕様」セクションを参照してください。

インストール DISTCC


distcc を呼び出すには、さまざまな状況に合わせて XNUMX つの異なる方法があります。

distcc は実際のコンパイラの名前でインストールして、への呼び出しをインターセプトできます。
それをリモートで実行します。この「マスカレード」コンパイラは最も幅広い互換性を持っています
既存のソース ツリーと併用でき、すべてのソース ツリーに distcc を使用したい場合に便利です。
編集。 distcc が使用されていることは、makefile に対して透過的です。

distcc は、「distcc cc -c hello.c」のようにコンパイラ コマンド ラインの先頭に追加できます。
または CC="distcc gcc"。一部の用途にのみ distcc を使用したい場合に便利です。
コンパイルすることも、それを試してみることもできますが、一部の Makefile で問題が発生する可能性があります。
$CC にスペースが含まれていないことを前提とする libtool のバージョン。

最後に、distcc はコンパイラとして直接使用できます。 「cc」は常に
この「暗黙的」モードにおける実際のコンパイラの名前。これは次のような場合に便利です
「明示的」モードが機能しない場合の対話型の使用ですが、実際には推奨されません
新しい用途に。

distcc を呼び出すために XNUMX つのメソッドを同時に使用しないでください。もし、あんたが
マスカレード ディレクトリを使用している場合は、CC や CXX を変更せず、ディレクトリを早めに配置するだけです
パス上にあります。マスカレード ディレクトリを使用していない場合は、CC を変更する必要があります。
および/または CXX、または distcc を明示的に呼び出すように makefile を変更します。

マスカレード


基本的なアイデアは、次の名前からのリンクを含む「マスカレード ディレクトリ」を作成することです。
実際のコンパイラを distcc バイナリに変換します。このディレクトリは PATH の先頭に挿入されるため、
コンパイラへの呼び出しはインターセプトされ、代わりに distcc が実行されます。 distcc はその後削除します
それ自体を PATH から検索して実際のコンパイラを見つけます。

例:

# mkdir /usr/lib/distcc/bin
# cd /usr/lib/distcc/bin
# ln -s ../../../bin/distcc gcc
# ln -s ../../../bin/distcc cc
# ln -s ../../../bin/distcc g++
# ln -s ../../../bin/distcc C++

次に、distcc を使用するには、ユーザーは最初にディレクトリ /usr/lib/distcc/bin を配置するだけです。
PATH を指定し、DISTCC_HOSTS またはファイルにホスト リストを設定します。 distcc が処理します
残り。

このマスカレード ディレクトリは、PATH 上で、マスカレード ディレクトリよりも前に存在する必要があることに注意してください。
同じ名前の実際のコンパイラと、それを実行する補助プログラムが含まれています。
これらのコンパイラ呼び出し (as や ld など) もディレクトリ内の PATH 上に存在する必要があります。
distcc が PATH を使用して実際のコンパイラを呼び出すため、マスカレード ディレクトリの後
マスカレード ディレクトリまでのすべてのディレクトリが切り取られた値。

マスカレード モードでは「再帰エラー」が発生する可能性があります。これは、distcc が
どういうわけか、本物のコンパイラではなく、自分自身を再び見つけます。これは、XNUMX つあることを示している可能性があります
おそらく、XNUMX つの distcc インストールが原因で、PATH 上のディレクトリをマスカレードします。
さまざまな場所。また、「マスカレード」と「マスカレード」を混在させようとしていることを示すこともあります。
「明示的な」操作。

再帰エラーは、リンクの代わりにシェル スクリプトを使用することで回避できます。たとえば、
/usr/lib/distcc/bin は、以下を含むファイル cc を作成します。

#!/bin/sh
distcc /usr/bin/gcc "$@"

このようにして、調査によって実際の gcc を見つける必要がある distcc に依存する必要がなくなります。
PATH 変数。代わりに、コンパイラの場所が明示的に提供されます。

使用する DISTCC WITH Cキャッシュ


ccache は、コンパイルの結果をキャッシュすることでソフトウェアのビルドを高速化するプログラムです。
ccache は通常、distcc より前に呼び出されるため、結果は通常の
キャッシュ。特異な Makefile を作成するには、いくつかの実験が必要になる場合があります。
すべてが連携して機能します。

最も信頼できる方法は、次のように設定することです。

CCACHE_PREFIX="distcc"

これは、実際のコンパイラのラッパーとして distcc を実行するように ccache に指示します。 ccacheはまだ使用しています
実際のコンパイラを使用してコンパイラのアップグレードを検出します。

ccache は、マスカレード ディレクトリのいずれかを使用して実行できます。 or 設定することにより

CC=ccache gcc」

バージョン 2.2 では、ccache は前処理されたソースからのコンパイルをキャッシュしません。
distccd または distcc から実行した場合、キャッシュ ヒットは発生しません。上でのみ実行する必要があります。
クライアント側と distcc の前で使用できます。

distcc のポンプ モードは ccache と互換性がありません。

HOST 規格


「ホスト リスト」は、コンパイルに使用するマシンを distcc に伝えます。順番に、distcc は次のようになります。
セクションに $DISTCC_HOSTS 環境変数、ユーザーの $DISTCC_DIR/ホスト ファイル、および
システム全体のホスト ファイル。ホスト リストが見つからない場合、distcc は警告を発行してコンパイルします。
ローカル。

ホスト リストは、ホスト仕様を空白で区切った単純なリストです。もっとも単純な
最も一般的な形式は、次のようなホスト名です。

ローカルホスト (緑字)

distcc はリストの先頭にあるホストを優先するため、マシンは次のリストにリストされる必要があります。
速度の降順。特に、単一のコンパイルしか実行できない場合 (たとえば、
設定スクリプトからのように)、リストされた最初のマシンが使用されます(ただし、「 -ランダム化 下)。

ローカルホスト リスト内の適切な位置に配置することが、良好なパフォーマンスを得るために重要です。
ジョブをローカルで実行する場合のオーバーヘッドは低いため、通常は localhost を最初に指定する必要があります。
ただし、クライアントにローカル ジョブを実行するのに十分な空きサイクルがあることが重要です。
distcc クライアント。クライアントがボランティアよりも遅い場合、またはボランティアの数が多い場合
ボランティアの場合、そのクライアントはリストの後ろに入れるか、まったく入れないかのどちらかです。一般的に
このルールでは、クライアントの合計 CPU 速度が合計の XNUMX 分の XNUMX 未満の場合、
クライアントはリストから除外する必要があります。

大規模な共有ビルド クラスターと単一の共有ホスト ファイルがある場合、上記のルールは適用されません。
これにより、ホスト ファイル内の最初の数台のマシンが最初に試行されます。
リストの後半にあるマシンよりもビジーである可能性があります。これを避けるには、キーワードを配置します
-ランダム化 をホストリストに追加します。これにより、ホスト リストがランダム化されます。
大規模なビルド クラスターのパフォーマンスがわずかに向上するはずです。

XNUMX つの特別なホスト名があります --ローカルスロット & --localslots_cpp に役立つもの
ローカルマシンの負荷を調整しています。の --ローカルスロット ホストはジョブの数を指定します。
ローカル マシン上で同時に実行できるリモートで実行することはできませんが、
--localslots_cpp ローカルで並行して実行するプリプロセッサの数を制御します。
機械。これらの値を調整すると、パフォーマンスが向上する可能性があります。大規模なプロジェクトでのリンクには時間がかかる場合があります
大量のメモリ。リモートで実行できない並列リンカーの実行
マシンを強制的にスワップする可能性があり、単にジョブを実行する場合よりもパフォーマンスが低下します。
入れ替えなしのシーケンス。並列プリプロセッサの数を適切に設定する
ローカルマシンにはいくつかの並列要素があるため、make でより大きな並列要素を使用できるようになります。
ローカルリソースの使用量を測定するメカニズム。

最後にホストエントリがあります

パフォーマンスは、プロジェクトに使用されるソースとメイクファイルの詳細によって異なります。
マシンとネットワークの速度。ホストリストのさまざまな設定を試してみる
& -j 要因によりパフォーマンスが向上する可能性があります。

構文は次のとおりです。

DISTCC_HOSTS = ホストスペック ...
HOSTSPEC = LOCAL_HOST | SSH_ホスト | TCP_ホスト | OLDSTYLE_TCP_HOST
| | GLOBAL_OPTION
| | ゼロコンフ
LOCAL_HOST = ローカルホスト[/LIMIT]
| --localslots=
| --localslots_cpp=
SSH_HOST = [ユーザー]@ホストID[/LIMIT][:COMMAND][オプション]
TCP_HOST = ホストID[:ポート][/LIMIT][オプション]
OLDSTYLE_TCP_HOST = ホストID[/LIMIT][:PORT][オプション]
ホスト ID = ホスト名 | IPV4 | IPV6 | IPVXNUMX
オプション = ,オプション[オプション]
オプション = lzo | CP
GLOBAL_OPTION = --ランダム化
ゼロコンフ = +ゼロコンフ

構文の個別の例をいくつか示します。

ローカルホスト
リテラルの単語「localhost」は、コンパイルが次のように行われるように特別に解釈されます。
ローカル マシン上のデーモンに渡されるのではなく、直接実行されます。もし、するなら
テストのためにローカル マシン上のデーモンに接続したい場合は、
マシンの IP アドレスまたは実際のホスト名。 (これは遅くなります。)

IPV6 角括弧で囲まれたリテラルの IPv6 アドレス。たとえば、 [::1]

IPV4 リテラルの IPv4 アドレス (例: 10.0.0.1

ホスト名
リゾルバーを使用して検索されるホスト名。

:ポート デフォルトの 3632 ではなく、指定した XNUMX 進数のポート番号に接続します。

@ホストID
TCP ではなく SSH 経由でホストに接続します。 SSH 接続のオプションは次のとおりです。
に設定される 〜/ .ssh / config

ユーザー@ 指定したユーザー名として SSH 経由でホストに接続します。

:指示
SSH 経由で接続し、指定されたパスを使用して distccd サーバーを見つけます。これは
通常は、何らかの理由で distccd をディレクトリにインストールできない場合にのみ必要です
SSH 接続のデフォルトの PATH にあります。 「distccd:」のようなエラーが発生した場合は、これを使用してください。
SSH モードでコマンドが見つかりません。

/制限 任意のホスト仕様に小数点制限を追加して、ホストの数を制限できます。
このクライアントがマシンに送信するジョブ。制限のデフォルトは XNUMX つあたり XNUMX つです
host (localhost の場合は XNUMX つ) ですが、サーバーによってさらに制限される場合があります。あなたがすべき
XNUMX つ以上のプロセッサを搭載したサーバーの場合のみ、これを増やす必要があります。

、ルゾ この TCP または SSH ホストの LZO 圧縮を有効にします。

、cpp このホストの distcc-pump モードを有効にします。注: ビルド コマンドは次のようにラップする必要があります。
インクルードサーバーを起動するための distcc-pump スクリプト。

-ランダム化
実行前にホスト リストの順序をランダム化します。

+ゼロコンフ
この オプション is 利用できます if 距離 ました コンパイル   アバヒ サポート 使用可能 at
configure 時間。 この特別なエントリがホスト リストに存在する場合、distcc は
Avahi Zeroconf DNS Service Discovery (DNS-SD) を使用して、利用可能な distccd を見つけます。
ローカルネットワーク上のサーバー。これにより、ホストを明示的にリストする必要がなくなります。
distcc サーバー マシンの名前または IP アドレス。 distccd サーバーには次のものが必要です。
distccd に「--zeroconf」オプションを指定して開始されました。重要な注意点は、
現在の実装では、ポンプ モード (",cpp") と圧縮 (",lzo") は
zeroconf 経由で見つかったホストには決して使用しないでください。

以下にいくつかの可能性を示す例を示します。

ローカルホスト/2 @bigman/16:/opt/bin/distccd 古いマシン:4200/1
# カートマン is ダウン
遠い/3,lzo

ホスト仕様ではコメントが許可されています。コメントはハッシュ/ポンド記号 (#)
そして列の最後尾まで走ります。

リスト内のホストに到達できない場合、distcc は警告を発し、そのホストを無視します。
約XNUMX分。

圧縮


  イゾ host オプションは、データ転送に LZO 圧縮を使用することを指定します。
前処理されたソース、オブジェクト コード、エラー メッセージが含まれます。圧縮は通常、
100Mbps より遅いネットワークでは経済的ですが、結果はネットワークによって異なる場合があります。
プロセッサとソースツリー。

圧縮を有効にすると、distcc クライアントとサーバーの CPU 使用時間は増加しますが、使用量は減少します。
ネットワークトラフィック。ポンプ モードでは、CPU 時間の追加は重要ではありません。圧縮
通常、ソースコードの比率は 4:1、オブジェクトコードの比率は 2:1 です。

圧縮を使用するには、クライアントとサーバーの両方で distcc の少なくともリリース 2.9 を使用する必要があります。
サーバー構成は必要ありません。サーバーは常に圧縮された応答で応答します。
圧縮されたリクエスト。

ポンプ モードでは、サーバーで lzo host オプションがオンになっている必要があります。

検索 パス


コンパイラ名が絶対パスの場合、それはそのままサーバーに渡され、
コンパイラはそのディレクトリから実行されます。例えば:

距離 /usr/local/bin/gcc-3.1415 -c こんにちはC

コンパイラ名が絶対名でない場合、または完全修飾名でない場合は、distccd の PATH が検索されます。
distcc がマスカレード ディレクトリから実行される場合、コンパイラのベース名のみが
使用済み。クライアントの PATH はプリプロセッサを実行するためにのみ使用され、プリプロセッサには影響しません。
サーバーのパス。

タイムアウト


distcc クライアントとサーバーは両方とも、ネットワーク上のデータ転送にタイムアウトを課します。
これは、ダウンしているホストまたは到達不能なホストを検出し、コンパイルを防ぐことを目的としています。
使用中にサーバーが切断されると、無期限にハングアップします。クライアント側でタイムアウトが発生した場合
有効期限が切れると、ジョブはローカルで再実行されます。

現在、タイムアウトは構成できません。

診断


ローカルまたはリモートのコンパイラからのエラー メッセージまたは警告は診断に渡されます。
クライアント上の出力。

distcc は、verbose オプションを使用すると、広範なデバッグ情報を提供できます。これ
によって制御されます DISTCC_VERBOSE クライアント上の環境変数、および -詳細
サーバー上のオプション。トラブルシューティングの場合は、クライアントとサーバーの両方のエラーを調べてください。
メッセージ。

EXIT コード


distcc の終了コードは通常、コンパイラの終了コードです。コンパイルが成功した場合は XNUMX になります。
それ以外の場合はゼロ以外。

distcc は、ソース内の構文エラーなどの「本物の」エラーと、
ボランティアに接続するネットワークの問題などの「偶発的な」エラー。その場合
偶発的なエラーが発生した場合、DISTCC_FALLBACK が発生しない限り、distcc はローカルでコンパイルを再試行します。
オプションが無効になっています。

コンパイラがシグナルで終了した場合、distcc は終了コード 128 にシグナルを加えたものを返します。
数。

distcc 内部エラーにより、100 ~ 127 の終了コードが発生します。特に

100 一般的な distcc エラー。

101 間違った引数。

102 バインドに失敗しました。

103 接続に失敗しました。

104 コンパイラがクラッシュしました。

105 メモリが不足しています。

106 不正なホスト SPEC

107 入出力エラー

108 切り詰められました。

109 プロトコルエラー。

110 指定されたコンパイラがリモート ホスト上に見つかりませんでした。 $CCが設定されていることを確認してください
適切にインストールされており、検索パス上のディレクトリにインストールされていることを確認します。
distccd。

111 distcc への再帰呼び出し。

112 権限の破棄に失敗しました。

113 ネットワーク アクセスが拒否されました。

114 別のプロセスによって使用されています。

115 そのようなファイルはありません。

116 ホストが定義されておらず、フォールバックが無効になっています。

118タイムアウト。

onworks.net サービスを使用してオンラインで distcc を使用する


無料のサーバーとワークステーション

Windows と Linux のアプリをダウンロード

Linuxコマンド

Ad