質問

チーム全体でgccコンパイル済みコードでccacheを使用することを考えていました(同じマシン上のすべての開発者が同じccacheのキャッシュを使用します)。

商用製品について説明しているため、「正確さ」コンパイルの最優先事項です。

質問があります:

  1. ccacheを使用したコンパイルは安全 / 再現性ですか? ccacheがキャッシュヒットを誤って想定しているいくつかの例外状況があります。

    ソースコードをチェックアウトしてコンパイルすると、同じ製品が届くと思います (まったく同じライブラリ/バイナリ)新しいコンパイルプロセスを繰り返すたび。 これは、商用製品では必須です。

  2. ccacheを使用するオープンソース/商用製品はありますか? システムを構築しますか?これにより、同僚にccacheを使用するよう説得しやすくなります。

ありがとう

役に立ちましたか?

解決

そのマニュアルによると、 ccache は、以下の前に何らかのオブジェクトをコンパイルしたかどうかを判断します。

  • コンパイラーを -E
  • で実行した場合のプリプロセッサー出力
  • コマンドラインオプション
  • 実際のコンパイラのサイズと変更時間
  • コンパイラによって生成された標準エラー出力

いくつかのPHBが ccache によって想定されるリスクを心配している場合は、開発ビルドにのみ使用し、フロントエンドなしでコンパイラーを使用して最終製品をビルドします。または、最終製品をビルドする前にキャッシュをクリアできます。

更新: ccache をビルドシステムの不可欠な部分として使用している製品については知りませんが、可能な環境に統合するのは本当に簡単ですコンパイラのパスを設定します。つまり autoconf の場合:

CC="ccache gcc" ./configure

著者の名前を見た後、Sambaチーム内で広く使用されていることはかなり安全な仮定だと思います。

stderr の使用に関するRingdingのコメントへの応答として

更新 ccache の観点から、興味深い情報の1つはCコンパイラのバージョンと構成文字列。 gcc はそれを標準エラーファイルに出力します:

$ gcc -v 2>err
$ cat err
Using built-in specs.
Target: i486-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Debian 4.3.4-2' --with-bugurl=file:///usr/share/doc/gcc-4.3/README.Bugs --enable-languages=c,c++,fortran,objc,obj-c++ --prefix=/usr --enable-shared --enable-multiarch --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --enable-nls --with-gxx-include-dir=/usr/include/c++/4.3 --program-suffix=-4.3 --enable-clocale=gnu --enable-libstdcxx-debug --enable-objc-gc --enable-mpfr --enable-targets=all --with-tune=generic --enable-checking=release --build=i486-linux-gnu --host=i486-linux-gnu --target=i486-linux-gnu
Thread model: posix
gcc version 4.3.4 (Debian 4.3.4-2)

ccache がこれまたは同様の出力を使用することは間違いないでしょう。ただし、ソースコードはいつでも確認できます。 :-)

他のヒント

個人的には非常に使いやすいccacheのみに精通しており、大規模なプライベートプロジェクトには非常に便利です。 しかし、チーム全体のベースに関しては、まだ経験がありません。 AO(監査対象オブジェクト)

一般:

  • より堅牢なメカニズムを提供し、キャッシュに分散環境を使用できます
  • ccacheはコンパイル時間のみを高速化し、AOはリンク時間も高速化します。
  • c / c ++のみに限定されない

回答を投稿してから(1.5年前...)、ビルドマネージャーとR& Dマネージャーを説得して、ccacheを自動ビルドシステムに統合することに成功しました。同社は200人以上の開発者を雇用しているため、実際に機能しています。リンクフェーズについては、依然として問題です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top