簡単な質問: 大規模なプロジェクトをより速くコンパイルするために、g++ がそれ自体の複数のインスタンスを生成できるようにするコンパイラ フラグは何ですか (たとえば、マルチコア CPU では一度に 4 つのソース ファイル)。
8 に答える
これは make で行うことができます - gnu make では -j フラグです (これはユニプロセッサ マシンでも役立ちます)。
たとえば、make から 4 つの並列ジョブが必要な場合:
make -j 4
パイプでgccを実行することもできます
gcc -pipe
これにより、コンパイル段階がパイプライン化され、コアをビジー状態に保つのにも役立ちます。
追加のマシンも利用できる場合は、distccを確認してください。これにより、それらのマシンにもコンパイルがファームアウトされます。
そのようなフラグはありません。1 つあると、各ツールに 1 つの機能だけを実行させ、それを適切に実行させるという Unix の哲学に反します。コンパイラ プロセスの生成は、概念的にはビルド システムの仕事です。おそらく探しているのは、GNU make の -j (ジョブ) フラグです。
-j4 を作る
または、pmake または類似の並列 make システムを使用することもできます。
人々は言及しましmake
たがbjam
、同様の概念もサポートしています。を使用bjam -jx
すると、bjam にx
並行コマンドを作成するように指示されます。
Windows と Linux で同じビルド スクリプトを使用し、このオプションを使用すると、両方のプラットフォームでビルド時間が半分になります。良い。
make
あなたのためにこれを行います。-j
マニュアル ページでおよび-l
スイッチを調べます。g++
並列化できないと思います。
distcc は、現在のマシンだけでなく、distcc がインストールされているファーム内の他のマシンにもコンパイルを配布するために使用できます。
g++ についてはよくわかりませんが、GNU Make を使用している場合は、「make -j N」(N は make が作成できるスレッドの数) を使用すると、make で複数の g++ ジョブを同時に実行できます (非常に長い)ファイルは互いに依存していないため)。