2013-01-23 7 views
6

分散ビットブレークコンパイルを使用してoeプロジェクトを構築する方法はありますか? 私はdistccについて考えました。ビットブレークを使用した分散コンパイル

export PATH=~/distcc/bin:$PATH 
make -jn CC=linux-gcc 

makeはdistccを指す私のパスからlinux-gccを呼び出します。
distccは既知のすべてのホストにタスクをスケジュールします。
-jnはmakeのn6インスタンスを作成します。
正常に動作します。
しかし今、distccをbitbakeと使いたいと思います。
私はbitbakeで-jnを使用する方法を知っています。
ちょうどexport PARALLEL_MAKE=-jn

しかし、どのように使用すると、ビットベークのPATH=~/distcc/bin:$PATHをエクスポートします。
distcc/binは、$PATHの前になければなりません。
しかし、bitbakeは、$PATHの前に$PATH_prepend(org.openembedded.dev/conf/bitbake.confに配置)を配置します。

誰かがビットブレイクを使った分散ビルディングのより良い方法のための別のツールを手に入れましたか?

+0

exportコマンドは、$ PATH変数に指定されたパスを追加し、そのセッションでアクティブになります。しかし、私はあなたの問題についてはっきりしていません。あなたはあなたの問題を説明してください。 –

+0

問題は私がPARALLEL_MAKEを使う方法を知っているだけですが、bitbakeについては、最後にmakeを呼び出す人は、PARALLEL_MAKE方法として動作するように設定する方法がありません。 – butter

答えて

1

並列化を使用してビルドを呼び出す方法を少し増やすと、local.confを編集してBB_NUMBER_THREADSとPARALLEL_MAKEのコメントを解除し、その値を2倍の数のコアに設定することができます。これで、BitBakeを呼び出すたびに、これらの値が使用されます。

+0

私はBB_NUMBER_THREADSの方法を試しましたが、それは単一のマシンで大きな改善が得られませんでした。OSにはスレッドの作成が制限されています – butter

11

は、アイスクリームをお試しください:distccのようhttps://github.com/icecc/icecream/blob/master/README.md

、アイスクリームは、ビルドからジョブをコンパイルとり、並列ビルドを許可するリモートマシンの間でそれを分配します。しかし、distccとは異なり、Icecreamはコンパイルジョブを動的にスケジューリングする中央サーバーを使用して、最速の空きサーバーにします。

OpenEmbeddedとYoctoプロジェクトはどちらもIcecreamをサポートしています。 https://git.yoctoproject.org/cgit.cgi/poky/plain/meta/classes/icecc.bbclass

アイスクリームをインストールし、その後、あなたのsite.confまたはlocal.confに以下を追加参照してください

INHERIT += "icecc" 

# This value overrides PARALLEL_MAKE when ICECC is enabled 
# This would enable icecc for local and cross 
ICECC_PARALLEL_MAKE = "-j 24" 
関連する問題