【问题标题】:ld: library not found for -lcrt1.3.1.o error while running app in device with xcode 8.0 with iOS10ld:在使用 xcode 8.0 和 iOS10 的设备中运行应用程序时,找不到 -lcrt1.3.1.o 错误的库
【发布时间】:2017-01-30 14:59:58
【问题描述】:

将 xcode 升级到 8.0 后,我的应用程序项目构建时设备目标出错,但模拟器构建成功。

错误类似于:
ld: library not found for -lcrt1.3.1.o

这个错误有什么解决办法。

【问题讨论】:

标签: device simulator ios10 xcode8


【解决方案1】:

花了很多时间,我终于找到了这个错误的原因。

错误: ld:找不到 -lcrt1.3.1.o 的库

解决方案: 如果您的项目源的部署目标来自 iOS 5.0,请将其更改为 iOS 6.0 或更高版本,您的错误将得到修复。现在这也适用于设备。

万岁!!!

【讨论】:

  • 这帮助我解决了一个非常旧的应用程序,我正试图再次运行。谢谢!
  • 没有为我解决了同样的问题。有人知道不同的解决方案吗?
  • 抱歉,现在已修复。我必须在项目和目标设置中更改部署目标。
  • 你拯救了我的一天,谢谢! :)
  • 考虑到我的应用程序仍在第一代 iPad 上运行,因此进行此更改有点苦乐参半。但它确实解决了问题。
【解决方案2】:

crt1.3.1.o 是一个包含在旧版 iOS(以及它们的 SDK)中但不再存在于较新的 SDK 中的库。但是,当项目的部署目标设置为较旧的 iOS(

要在较新的 Xcode 中继续支持 iOS 5.x,只需将 crt1.3.1.o 从较旧的 Xcode 复制到较新的 Xcode 中相应的 …/usr/lib/ 目录。 Xcode 将仅在部署目标 crt1.3.1.o — 对于部署目标≥6.0 的项目,crt1.3.1.o 仍未使用,并且生成的链接二进制文件与之前的 …/usr/lib/crt1.3.1.o-addition 相同。

要获得更新的 Xcode 以将项目与 iOS 5.x 部署目标正确链接:

  1. https://developer.apple.com/downloads/ 下载仍然有crt1.3.1.o 的旧Xcode。

    我使用的是 Xcode 5.1.1,不过任何支持 iOS 5.x 的 Xcode 都应该可以工作(according to Wikipedia 应该是 Xcode 4.2-6.4)。

  2. 打开 Xcode .dmg 并在磁盘映像上找到位于 /Volumes/Xcode/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS….sdk/usr/lib/crt1.3.1.o 的文件。

    因为我使用的是 Xcode 5.1.1,所以我的地址是 …/iPhoneOS7.1.sdk/usr/lib/crt1.3.1.o

  3. 复制到新 Xcode 中相同的 Xcode.app-relative 目录:/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/lib/crt1.3.1.o

    我在撰写本文时更新的 Xcode 是最新版本 Xcode 8.1(开箱即用包括 iOS 10.1 SDK 和可下载的 iOS 模拟器支持回到 iOS 8.1)。


请注意,每次 Xcode 升级后您都需要重新执行这些步骤,因为标准的 Xcode 更新过程只是删除 Xcode.app 以及更新后的 Xcode.app 中包含的所有内容。

另外请注意,我已经使用 Xcode 8.1 成功测试了这个,以生成一个部署目标为 iOS 5.0 的应用程序,该应用程序将在我的 iOS 10.1.1 iPad Air 2 和我的 iOS 6.1.3 iPhone 4S 上运行。但是,我还没有向 iOS App Store 提交使用此过程的构建。虽然 Apple 的认证不太可能对这个 有问题(因为它毕竟是他们自己的 iOS crt1.3.1.o 库;并且因为没有其他方法可以针对最新的 SDK 构建应用程序同时仍然支持 iOS 回到5.x,这几乎可以肯定是一些企业客户仍在做的事情),我不能在这里做出坚定的承诺。

【讨论】:

  • 太棒了!我同时拥有XcodeXcode_7_3,并执行了这个:sudo cp /Applications/Xcode_7_3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/lib/crt1.3.1.o /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/lib/,它解决了问题!!
【解决方案3】:

删除“其他链接器标志”列表中的 -lPods-(someCocoaPod) 行,但仅当 $(inherited) 位于顶部时。起初我不确定,但令人放心的迹象是,当我离开编辑模式(继承)时,我仍然看到对我的 cocoapods 的引用。我在debug和release中测试过,都报错,问题马上解决了

【讨论】:

    【解决方案4】:

    您也可以从源代码重新编译它们,而不是使用旧 Xcode 安装中的库:https://github.com/mringwal/csu-ios

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-24
      • 1970-01-01
      • 2016-05-28
      • 1970-01-01
      • 1970-01-01
      • 2012-07-24
      • 2011-10-09
      • 1970-01-01
      相关资源
      最近更新 更多