我有一个图书馆项目,我一直为发行版本打开“Strip Debug Symbols

我最近注意到“Generate Debug Symbols”标志。当我将“Generate Debug Symbols”标志设置为NO时,我的库大小缩小了30%

这是针对发行版进行的合理优化吗?

剥离调试符号”和“生成调试符号”选项之间有什么区别,理想情况下,如果我剥离调试符号不会消失所有生成的调试符号?为什么我会看到这种差异?

除了-O(最快,最小)以外,我还能进行哪些其他优化来减小二进制大小?

Strip Linked Product”如何工作?

最佳答案

关于减少二进制文件的大小,这是我的发布配置文件看起来像关于剥离二进制文件的样子,我想这就是大多数开发人员这样做的方式:

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

通过这些build设置,至少从文件大小上说,Xcode似乎与在二进制文件上手动运行“strip”相同。

我还没有找到其他方法来进一步减少二进制文件的大小。注意那里的“DEPLOYMENT_POSTPROCESSING”标志-没有它,二进制文件的大小会大很多,例如,所有C函数都不会被剥离。

关于objective-c - Xcode LLVM + GCC 4.2-生成调试符号,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11461264/

10-15 15:34