7

我有一个库项目,我一直Strip Debug Symbols为发布版本打开“”

我最近注意到了“ Generate Debug Symbols”标志。当我将“ Generate Debug Symbols”标志设置为 NO 时,我的库大小会缩小 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 回答