2012-08-15 96 views
7

升级完成后,在Xcode 4.3的Xcode 4.4,我开始构建我的iPhone应用程序,以下错误:连接错误在Xcode 4.4

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中仍然可以编译。

有没有人有任何想法我可以追查是什么导致这个错误?

+0

它可能是你没有链接到你正在使用的框架,或者你链接到了错误的东西。如果是前者,请在构建设置中检查并链接它。如果后者,删除错误的链接器,并希望XCode将重新链接到正确的。 – aforaudrey 2012-08-15 18:32:32

+0

你的程序中是否有大的初始化全局或静态数据? – 2012-08-15 18:55:19

+0

@MartinR是的,比我在一个典型的程序中看到的要大(我没有写太多的代码),但是没有大约70亿甚至百万分之一的数量。 – 2012-08-15 18:59:54

回答

1

你可以看到所有的符号(包括全局变量)的尺寸在链接映射文件

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

或许这有助于缩小问题范围。

+1

不幸的是,在这种情况下,链接器不会创建该文件。 – 2012-08-17 17:00:54

+0

@ TheDirtyCalvinist:感谢您的反馈。不幸的是,我没有更多的想法如何解决这个问题。 – 2012-08-17 17:07:59

2

我有同样的错误。幸运的是,我可以回想起它出现的时刻,回滚并比较修订。这是Google Analytics GAI类中的静态方法。我不知道为什么会发生这种情况,因为项目中的其他类别工作正常,但希望它也可以帮助别人。

+0

这是我的情况!谢谢 – 2013-06-27 14:50:48