2016-05-23 22 views
1

SCons cacheは、異なるオペレーティングシステムとCPUアーキテクチャで安全ですか?SConsキャッシュは、さまざまなOSおよびCPUアーキテクチャでどのように動作しますか?

+0

はい。キャッシュ識別子は、プラットフォーム/アーキテクチャごとにキャッシュ参照を一意にするのに十分な情報に基づいていなければなりません。それ以外の場合はバグです。あなたはこれに何か問題を見たことがありますか? (あなたはおそらく "安全"で、 "保存しない"という意味です) – bdbaddog

答えて

1

異なるオペレーティングシステム間では、異なるオペレーティングシステムで異なるCPUアーキテクチャ間で動作しますが、デフォルトではありません。前回私がSConsキャッシュ(SConsのv2.0.1)を使用したのは、さまざまなCPUアーキテクチャ間で安全ではありませんでした。それが私の現在の仕事でそれを使用を止めた理由でした。アーキテクチャをビルド環境に正しく挿入することで安全にすることはできますが、正しく機能させることは困難です。

あなたのネットワーク上のすべてのビルドマシンが全く同じハードウェア仕様を持っていない限り、私はSConsキャッシュの使用をお勧めしません。ビルド・モードの変更時にすべてを再構築する必要がなくなります。

+0

これは驚くべきことです。私はメーリングリスト上の多くのマルチプラットフォームおよびマルチアーキテクチャのビルドユーザーから、これについて何の苦情も受けていないと思います。コンパイラを "gcc"として参照しているようで、プラットフォームに関係なくコマンドラインはまったく同じで、ソースと同じ相対位置にファイルを書き出しているようです。 – bdbaddog

+0

私は "CPUアーキテクチャ"の意味で私が非常にはっきりしていなかったと思います。我々が遭遇した最大の問題は、同じネットワーク上でIntelとAMDのマシンを混ぜ合わせて、Sconsキャッシュにプッシュ/プッシュすることでした。結果として得られたビルドの浮動小数点の不明瞭さは、誰が最初に構築してスコーンキャッシュにプッシュしたかに依存していました。私は、32ビットと64ビットの混在アーキテクチャを持つビルドマシンのネットワークに起因する同様の問題を見ることができます。 32ビットマシン上のビルドのビルドシグネチャは、64ビットマシン上のビルドシグネチャと同じにすることができますが、結果として得られるオブジェクトは確実に互換性がありません。 –

+0

これは、コンパイラが-march = nativeを実行し、オプティマイザがx86/x64の他の製造元で実行されている準最適なコードを吐き出しているためです。だからあなたがそのようなことを検出し、-m32 -m64と他のコマンドラインを置くなら、うまくいったはずです。基本的には、デフォルトをコマンドラインに入れます。または何もしない-DMY_32_BIT_INTEL_FLAGさえあります。十分なはずです。 – bdbaddog

関連する問題