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

问题描述 投票:7回答:1

我有一个图书馆项目,我总是将“Strip Debug Symbols”打开发布版本

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

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

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

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

Strip Linked Product”如何运作?

objective-c xcode xcode4.3 llvm-gcc
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函数都不会被剥离。

© www.soinside.com 2019 - 2024. All rights reserved.