Xcode LLVM + GCC 4.2 - 生成调试符号

San*_*osh 7 xcode objective-c llvm-gcc xcode4.3

我正在进行一个图书馆项目,我总是Strip Debug Symbols为发布版本启用" "

我最近注意到了" Generate Debug Symbols"旗帜.当我将" Generate Debug Symbols"标志设置为NO时,我的库大小缩小了30%

这是发布版本的合理优化吗?

" 条带调试符号 "和" 生成调试符号 "选项有什么区别,理想情况下,如果我剥离调试符号,并不是所有生成的调试符号都会消失?为什么我看到这种差异?

除了-Os(最快,最小)之外,还有什么其他优化可以减少二进制大小?

" Strip Linked Product" 如何运作?

小智 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
Run Code Online (Sandbox Code Playgroud)

通过这些构建设置,Xcode 似乎所做的与在二进制文件上手动运行“strip”相同,至少从文件大小来看是这样。

我还没有找到任何其他方法来进一步减少二进制大小。请注意那里的“DEPLOYMENT_POSTPROCESSING”标志 - 如果没有它,二进制大小将会大得多,例如所有 C 函数都不会被删除。