OS x 10.7.5 で xcode 4.5.1 を使用して C ライブラリをコンパイルしています。
xcode LLVM でコンパイルされたライブラリのサイズは、同じ最適化引数 -Os (xcode なしの端末) を渡す makefile でプレーン gcc を使用してコンパイルした場合よりも大幅に大きくなります。GCC は 130K のバイナリを生成し、Apple LLVM は 300K のバイナリを生成します。同じソース コードの同じコンパイラ オプション。
バイナリのiphoneシミュレーターバージョン、arm7バージョン、またはarm 7sバージョンを調べても、xcodeでコンパイルすると、約300Kのバイナリが得られます。.a および .o オブジェクトで nm を使用しましたが、不要な余分なシンボルはありません。
私のライブラリは、gcc を実行する以前のバージョンの xcode で 170K にコンパイルされたことを覚えています。
Apple LLVM/clang コンパイラがより大きな実行可能ファイルを生成することをどこにも読んだことがないので、xcode の最適化設定を適切に使用していない可能性があると思います。たとえば、Xcode で -Os を設定しても -O0 を設定しても、バイナリ サイズは同じ 300K 大きくなります。さらに紛らわしいのは、デバッグ バイナリがリリース バージョンよりも小さいことです。デバッグには -O0 設定があります。
明らかに私は何かが欠けています。
バイナリ サイズを縮小するための提案は歓迎します。
ありがとう、
ババ