iOS armv7:如何在链接之前对(太)大的对象进行切片
我有一个特别棘手的ld问题:我正在生成一个大的对象文件(一个“启动映像”,仅限armv7),它后来被一个Xcode项目使用 无论引导映像.o有多大,它总是成功创建的。但是,在构建Xcode项目时,Xcode稍后会失败,原因是:iOS armv7:如何在链接之前对(太)大的对象进行切片,ios,xcode,ld,Ios,Xcode,Ld,我有一个特别棘手的ld问题:我正在生成一个大的对象文件(一个“启动映像”,仅限armv7),它后来被一个Xcode项目使用 无论引导映像.o有多大,它总是成功创建的。但是,在构建Xcode项目时,Xcode稍后会失败,原因是: ld: Unable to insert branch island. No insertion point available. for architecture armv7 在这一点上有几件事需要提及: 我没有办法影响这个启动映像文件是如何生成的。这意味着我无法影
ld: Unable to insert branch island. No insertion point available. for architecture armv7
在这一点上有几件事需要提及:
- 我没有办法影响这个启动映像文件是如何生成的。这意味着我无法影响创建多个启动映像李>
- 我知道这个错误是从哪里来的[1]。当启动映像在16+MB左右时就会发生这种情况
- 我正在研究使用链接时间优化,但有人告诉我,对于这个引导映像生成器,这不是一个好主意(因为这个引导映像生成器的作者尝试了这个方法,并说LTO不可靠)
[1] 我们在当前的一个Unity 3D项目中遇到了同样的问题。这似乎是唯一的选择,降低“太大的”.o文件的大小 您可以尝试以下方法(对我们帮助很大):
这些是第一件要尝试的事情。但我总的来说遇到了这个问题,我需要一个通用的解决方案。我项目的背景是,大型.o文件是巨大的二进制(-c-)对象文件,它们是从已经精简的Java.jar文件(我在iOS上使用一个小型JVM)生成的。我认为除了将大型源文件/库拆分为较小的源文件/库之外,没有其他选择。但是如果你找到了,请告诉我;-)