7

私はライブラリプロジェクトを持っています、私は常にStrip Debug Symbolsリリースビルドのために""をオンにしました

Generate Debug Symbols最近、「 」フラグに気づきました。「」フラグをNOに設定するとGenerate Debug Symbols、ライブラリのサイズが30%縮小します。

これはリリースビルドのために行うための合理的な最適化ですか?

「デバッグシンボルの削除」オプションと「デバッグシンボルの生成」オプションの違いは何ですか。理想的には、デバッグシンボルを削除しても、生成されたデバッグシンボルがすべて消えることはありません。なぜ私はこの違いを見ているのですか?

また、バイナリサイズを減らすために、-Os(Fastest、Smallest)以外にどのような最適化を行うことができますか?

「」はどのように機能しStrip Linked Productますか?

4

1 に答える 1

1

バイナリ ファイルのサイズの縮小に関して、これは私のリリース構成ファイルがバイナリのストリッピングに関してどのように見えるかであり、ほとんどの開発者がそれを行う方法だと思います:

DEPLOYMENT_POSTPROCESSING = YES
COPY_PHASE_STRIP = NO (not necessary since my copied binaries are already stripped and codesigned)
STRIP_INSTALLED_PRODUCT = YES
STRIP_STYLE = all
SEPARATE_STRIP = YES
DEAD_CODE_STRIPPING = YES
GCC_GENERATE_DEBUGGING_SYMBOLS = NO

これらのビルド設定を使用すると、Xcode はバイナリに対して手動で「strip」を実行するのと同じことを行っているように見えます (少なくともファイル サイズからはわかります)。

バイナリサイズをさらに縮小する他の方法はまだ見つけていません。そこにある「DEPLOYMENT_POSTPROCESSING」フラグに注意してください。これがないと、バイナリ サイズが大幅に大きくなり、たとえば、すべての C 関数が削除されません。

于 2014-05-07T22:21:41.343 に答える