【问题标题】:Xcode link error: file too small for architecture armv7Xcode 链接错误:对于架构 armv7 来说文件太小
【发布时间】:2011-12-07 09:46:57
【问题描述】:

我收到这个奇怪的链接器错误:

ld:在 /Users/.../test project/iSMP.framework/iSMP 中,对于架构 armv7,文件太小

collect2: ld 返回 1 个退出状态命令 /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/llvm-gcc-4.2 退出代码 1 失败

Xcode 版本:4.0.2

如果我为模拟器编译,我得到

...对于架构 i386 来说文件太小

谷歌根本没有帮助..

我已经尝试过:

  • 重新添加框架
  • 清除搜索路径
  • 将框架移至其他目录并重新添加。

更新:来自 lipo -info libiSMP-2.1.a 的输出

fat 文件中的架构:libiSMP-2.1.a 是:armv6 armv7 i386

所以,这不是因为架构不匹配;

提前致谢!

【问题讨论】:

  • 干净的构建为我解决了这个问题......
  • 这些步骤为我解决了问题:1. 关闭 Xcode 2. 清理 DerivedData 文件夹 3. 重建

标签: xcode cocoa-touch linker-errors


【解决方案1】:

我已经从这个框架的支持团队收到了解决方案(谢谢大家):

符号链接在被移出时会变成平面文件 OS/X 到 Windows。 iSMP 框架具有以下结构: iSMP.framework / iSMP(指向 libiSMP-2.1.a 的符号链接) / 标头/libiSMP-2.1.a

要解决此问题,您可以在 Mac 上打开终端应用程序,然后 移动到 iSMP.framework 目录。当您键入“ls -l iSMP”时 命令您会注意到 iSMP 文件不再具有“l” 属性。然后,您应该通过删除 iSMP 文件。然后输入 'ln -s libiSMP.2.1.a iSMP' 。这将创建 链接。

您现在可以重建项目。

解决此问题的另一个解决方案是删除 iSMP 文件并 将 libiSMP-xx.a 重命名为 iSMP。

TL/DR:当符号链接从 OS/X 移动到 Windows 时,它们会变成平面文件。您需要更新它们。

【讨论】:

  • 这对我的问题有帮助。我重新创建了符号链接,它起作用了。
  • 我对 libjpeg.dylib 有类似的问题,我替换了整个 dylib 本身。
猜你喜欢
  • 2012-12-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-11
  • 2015-08-10
  • 2014-11-04
  • 2015-10-04
相关资源
最近更新 更多