Xcode 4.4中的链接器错误

时间:2012-08-15 18:20:56

标签: objective-c ios xcode4.4

从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中编译。

有没有人知道如何跟踪导致此错误的原因?

2 个答案:

答案 0 :(得分:2)

我有同样的错误。幸运的是,我可以回想起它出现的那一刻,回滚并比较修改。这是Google Analytics GAI课程中包含静态方法的类别。我不知道它为什么会发生,因为项目中的其他类别工作得很好,但希望它也可以帮助别人。

答案 1 :(得分:1)

您可以在链接地图文件中查看所有符号(包括全局变量)的大小:

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

所以这可能有助于缩小问题范围。