2012-07-12 17 views
7

を生成し、私は常に持っていた「Strip Debug Symbolsは」解放のためにオン私は最近、「Generate Debug Symbols」フラグに気づいXCodeのはLLVM + GCC 4.2は - 私は、ライブラリプロジェクトを抱えているデバッグシンボル

構築します。 "Generate Debug Symbols"フラグをNOに設定すると、ライブラリのサイズが30%縮みます

これはリリースビルドに適した最適化ですか?

私はデバッグシンボルを取り除く場合は理想的ではない生成されたすべてのデバッグシンボルが離れて行くだろう、「ストリップのデバッグシンボル」と「デバッグシンボルを生成」オプションの違いは何ですか?なぜ私はこの違いを見ているのですか?

また、バイナリサイズを減らすために作成できる-O(最高速、最小)以外の最適化は何ですか?

"Strip Linked Product"はどのように動作しますか?バイナリファイルサイズの縮小に関しては

+0

私はこのリンクからかなり良い理解を得ましたが、私はまだこれを説明するいくつかを愛するでしょう.. http://developer.apple.com/library/mac/#documentation/DeveloperTools/Reference/XcodeBuildSettingRef/1-Build_Setting_Reference /build_setting_ref.html – Santthosh

答えて

2

が、これは私のリリース構成ファイルがバイナリのストリッピングに関するどのように見えるかと私はそれがほとんどの開発者がそれを行う方法だと思う。これらにより

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関数は削除されません。

+0

質問に完全には答えません。 「デバッグシンボルの削除」と「デバッグシンボルの生成」の違いは何ですか?彼らの名前から、彼らはお互いに矛盾しているように聞こえる。典型的なXcodeナンセンスイモ。 – Ash

関連する問題