10

おそらく簡単な答えです。これらのフラグの一部について、GCC のドキュメントで使用されている言語にかなり混乱しています。

とにかく、私は 3 つのライブラリと、これら 3 つすべてを使用するプログラムを持っています。個々の (潜在的に) 異なる警告フラグのセットを使用して、各ライブラリを個別にコンパイルします。ただし、3 つのライブラリすべてを同じ最適化フラグのセットでコンパイルします。

次に、これら 3 つのライブラリにリンクするメイン プログラムを、独自の警告フラグのセットと、ライブラリのコンパイル中に使用されるのと同じ最適化フラグを使用してコンパイルします。

1) 最適化フラグが存在する状態でライブラリをコンパイルする必要がありますか? または、最終的なプログラムをコンパイルしてライブラリにリンクするときにこれらのフラグを使用できますか? 後者の場合、これらのライブラリ内のコードのすべてまたは一部 (おそらく呼び出されたもの) を最適化しますか?

2) -fwhole-program -flto -fuse-linker-plugin とリンカー プラグイン ゴールドを使用したいと思います。どの段階でこれらを使用してコンパイルしますか...最終的なコンパイルだけですか、それともライブラリのコンパイル中にこれらのフラグが存在する必要がありますか?

3) 2) とほぼ同じですが、-fprofile-generate -fprofile-arcs および -fprofile-use を使用します。最初にプログラムを生成して実行し、次に使用して実行することを理解しています。ただし、各ライブラリを生成/使用などでコンパイルする必要がありますか、それとも最終的なプログラムだけですか? また、それが最後のプログラムである場合、-fprofile-use でコンパイルすると、ライブラリの機能も最適化されますか?

4

1 に答える 1