【问题标题】:What are best practices to decrease the size of static libraries in objective-c?减少objective-c中静态库大小的最佳实践是什么?
【发布时间】:2012-12-06 22:20:39
【问题描述】:

在构建objective-c 静态库时,我注意到.a 文件(来自模拟器和iPhone 的胖文件)非常大。特别是,它最初是 5.7mb。我找到了this post 并将我的构建设置Generate Debug Symbols 设置为No,将lib 大小减小到1.7mb。

这是一个很大的改进,但还有什么可以做的吗?仅实现和头文件就占用了大约 100kb。

【问题讨论】:

    标签: ios objective-c xcode static-libraries


    【解决方案1】:

    如果您担心,静态库只是归档在一起的相关 .o 文件加上一些簿记。因此,一个 1.7mb 的静态库——即使其中的代码是整个 1.7mb——通常也不会给你的产品增加 1.7mb。将适用有关死代码剥离的常规规则。

    除此之外,您还可以减少代码的构建大小。以下可能不是一个完整的列表。

    在目标的构建设置中查找“优化级别”。通过将其切换为“Fastest, Smallest -Os”,您将允许编译器牺牲一些速度来换取大小。

    确保您正在为 thumb 构建更紧凑的 ARM 代码。假设您使用的是 LLVM,这意味着确保您的项目设置中没有 -mno-thumb

    还要考虑您要构建的架构。 Apple 不允许提交同时支持 ARMv6 和 iPhone 5 屏幕的应用程序,并且从最新的 Xcode 中完全放弃了对 ARMv6 的支持。所以在这一点上可能没有意义。

    【讨论】:

    • +1 指出库的大小不会完全添加到二进制大小,因为链接器通常会优化大量时间。
    • @Tommy 如果用户指定 -all_load 或 -force_load 会发生什么?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-27
    • 1970-01-01
    相关资源
    最近更新 更多