7

从 Xcode 4.3 升级到 Xcode 4.4 后,我开始在构建我的 iPhone 应用程序时遇到以下错误:

ld: section __objc_const (address=0x0010C720, size=7265990088) would make the output executable exceed available address range for architecture i386 clang: error: linker command failed with exit code 1 (use -v to see invocation)

内存地址和编号对我来说没有任何意义,但它们在清理和重建过程中保持一致。我不清楚如何找到他们可能引用的内容。

该代码在 XCode 4.3 中已经并且仍然在编译。

有谁知道我如何追踪导致此错误的原因?

4

2 回答 2

2

我有同样的错误。幸运的是,我能回忆起它出现、回滚并比较修订的那一刻。它是 Google AnalyticsGAI类中具有静态方法的类别。我不知道为什么会这样,因为项目中的其他类别工作得很好,但希望它也能帮助别人。

于 2013-06-17T05:38:32.073 回答
1

您可以在Link Map File中查看所有符号(包括全局变量)的大小:

  • 在您的目标的构建设置中,转到“链接”部分并将“写入链接映射文件”设置为“是”。
  • 构建程序。链接器将失败,但会写入链接映射文件。
  • 找到链接映射文件。链接器的日志输出显示了参数-map -Xlinker -/path/to/linkmapfile.txt。它位于项目的 DerivedData 文件夹中。
  • 链接映射文件显示所有符号的地址(第一列)和大小(第二列)。对于全局变量,它显示名称和它们所在的目标文件。
  • 您应该在链接映射文件中找到错误消息的地址(在您的示例中为 0x0010C720)。
  • 您可以检查链接映射文件中是否有其他大尺寸符号。

所以也许这有助于缩小问题的范围。

于 2012-08-16T17:25:28.780 回答