【问题标题】:ld: symbol(s) not found for architecture armv7 when using CocoaPodsld:使用 CocoaPods 时未找到架构 armv7 的符号
【发布时间】:2014-02-22 01:15:45
【问题描述】:

这只发生在一台机器上,一台 Mac mini 构建服务器。 armv7s 也有同样的错误。它适用于几个 Ubuntu 构建代理和我的本地机器(Macbook Pro)。这些服务器都有相同的:

  • XCode 版本 (5.0)
  • Podfile/Podfile 锁定
  • Pod 缓存(在每台机器上清除)
  • Maven 版本 (3.1.1)
  • Cocoapods 版本 (0.29.0)

正在使用的 pod 是 TTTAttributedLabel:

[INFO] Undefined symbols for architecture armv7s:
[INFO]   "_kCTUnderlineStyleAttributeName", referenced from:
[INFO]       -[TTTAttributedLabel commonInit] in libPods.a(TTTAttributedLabel.o)

但是 TTTAttributedLabel 没有用作 pod,它的源代码被直接粘贴到另一个添加到此项目的私有 pod 中。我不知道为什么,因为我没有开发它并且没有开发它的开发人员。 TTTAttributedLabel 的源代码以某种方式进行了定制,因此我不喜欢更改它,因为这是一个生产版本。

所以我有一个主项目,其中包括一个私有 pod,它的源代码中直接包含来自 TTTAttributedLabel 的代码。

私有 pod 确实安装正确。 TTTAttributedLabel 文件包含在私有 pod 的编译源中。 libPods.a 似乎在 XCode 中正确链接。主项目和 pod 的有效架构都是相同的(armv7 和 armv7s)。

在过去约 6 小时内,我尝试了几乎所有在互联网上可以找到的答案。

为什么这个服务器找不到这些符号?为什么它在除此处之外的任何地方都有效?

【问题讨论】:

    标签: ios xcode maven xcodebuild cocoapods


    【解决方案1】:

    前几天我有这个,我必须清除缓存,然后通过运行以下命令重新安装 pod:

    rm -rf "${HOME}/Library/Caches/CocoaPods"
    rm -rf "`pwd`/Pods/"
    pod update
    

    然后使用 Cmd+Shift+K 清理工作区

    【讨论】:

    • 我确实用pwd 尝试了第一个命令,但没有尝试第二个命令。我明天试试,谢谢。
    【解决方案2】:

    问题是 cocoapods 版本 0.23.0(或低于 0.29.0 的版本)。即使构建服务器有 0.29.0,构建实际上是使用 Ruby 的 system() 命令在 Rails 子外壳内运行的。这意味着它也在使用 Rails 包,它只有 cocoapods 0.23.0。

    【讨论】:

    • 那么你做了什么来解决这个问题?
    猜你喜欢
    • 2016-04-29
    • 1970-01-01
    • 1970-01-01
    • 2012-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多