gpt4 book ai didi

iphone - 致命的 'section too large, can' t 在 gcc 中编码内存地址(iPhone 应用程序)

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:54:05 24 4
gpt4 key购买 nike

我开发了一个 MonoTouch iPhone 应用程序。目前它通过解析生成我所有对象的大量 xml 数据来工作。我试图通过序列化这些对象并存储在 sql lite 数据库中来提高启动速度。但这实际上更慢。相反,我所做的是编写一个程序来预解析此 xml,然后写出可以简单编译的类文件,并在运行时实例化对象。

这行得通并且速度大大提高,但是我只能在 gcc 编译器失败之前编译其中的一部分:我得到一个

"FATAL:Section too large, can't encode r_address"

无法将地址编码为 24 位分散重定位条目的错误

任何人都可以帮我解释一下吗?我不是特别了解编译器,但我很想知道这是否可行,或者我是否做错了什么。

每个单独的类都会编译,只有当我编译其中一些时才会失败。
没有具体数量的类导致它失败,也没有函数的长度,相反,它似乎是由应用程序代码的绝对大小引起的。

谢谢你的时间,利亚姆

最佳答案

这已经是一个known issue .

您可以做的是尝试减小应用程序的最终大小。您可以采取一些措施来尝试减小应用程序的大小:

  • 启用链接(项目属性 - iPhone 构建 - 链接器行为:链接所有程序集)

  • 避免使用值类型的泛型,因为它会导致每个值类型发出一次代码(因此,例如,如果您使用 List<int>List<long>,List 代码将发出两次 - 对于更大的泛型类型,这会产生很大的不同)。请注意,所有类类型都将共享代码(因此 List<string>List<object> 将使用相同的代码),因此可以自由地对类类型使用泛型。

关于iphone - 致命的 'section too large, can' t 在 gcc 中编码内存地址(iPhone 应用程序),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8761851/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com