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

标签 objective-c xcode xcode4.3 llvm-gcc

我有一个库项目,我总是为发布版本打开“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/

相关文章:

iphone - 获取任务进程失败-测试应用xcode到iPhone

objective-c - NSTableView 内容未正确刷新

objective-c - 带有更多...文本的 UILabel

ios - 如何在 Objective C 中获取带有 subview 的 uiimageview 图像

ios - 使用 Xcode 机器人进行持续集成 : shared schemes vs. 构建配置

iphone - 如何设置文本字段的条件。文本?

iphone - Objective-C - 何时使用 'self'

iphone - 自定义 uitableview 单元格的 uiscrollview 不可滚动(或可访问)

iphone - Objective-C:按帧播放视频

iphone - 从 UITableView 选择单元格并转到另一个 UITableView