我有一个图书馆项目,我一直为发行版本打开“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/