我有一个库项目,我总是为发布版本打开“Strip Debug Symbols
”
我最近注意到“生成调试符号
”标志。当我将“Generate Debug Symbols
”标志设置为 NO 时,我的库大小缩小了 30%
这是对发布构建的合理优化吗?
“Strip Debug Symbols”和“Generate Debug Symbols”选项有什么区别,理想情况下,如果我剥离调试符号,所有生成的调试符号都不会消失离开?为什么我会看到这种差异?
除了 -Os(最快,最小)我还可以进行哪些其他优化来减小二进制文件的大小?
“剥离链接产品
”是如何工作的?
最佳答案
关于二进制文件大小的减少,这就是我的发布配置文件在剥离二进制文件时的样子,我猜大多数开发人员都是这样做的:
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 似乎与在二进制文件上手动运行“剥离”一样,至少从文件大小来看是这样。
我还没有找到任何其他方法来进一步减小二进制文件的大小。请注意那里的“DEPLOYMENT_POSTPROCESSING”标志 - 如果没有它,二进制文件的大小会大很多,例如所有 C 函数都不会被删除。
关于objective-c - Xcode LLVM+GCC 4.2 - 生成调试符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11461264/