【问题标题】:Find the dependency that links against stdc++找到链接到 stdc++ 的依赖项
【发布时间】:2019-03-18 09:38:35
【问题描述】:

我正在开发一个具有约 50 个依赖项的 iOS 项目。几乎所有这些都是用 cocoapods 管理的。有些是开源代码,有些是动态框架,有些是静态框架。

在这个项目中,我想利用 iOS 12 的新 API,因此我必须使用 Xcode 10。

我的问题是,似乎至少有 1 个依赖项使用了 Apple 在 Xcode 10 中删除的 libstdc++(请参阅 herethere),在我尝试构建时导致以下错误: ld: library not found for -lstdc++.6

我发现我的 Pods 项目实际上是针对 libstdc++ 链接的,因为它的 xconfig 文件包含 OTHER_LDFLAGS = $(inherited) -ObjC (...) -l"stdc++.6" (...) 但是我查看了每个 pod 的项目,他们都使用 libc++ 而不是 libstdc++,并且在他们的 xconfig 文件中没有针对 libstdc++ 的链接

那么 lidstdc++ 是从哪里来的呢?

【问题讨论】:

  • iOS 项目中有 50 个依赖项?这听起来很可怕。

标签: ios xcode cocoapods libstdc++


【解决方案1】:

我最终阅读了每个 pod 的 podspec 文件,并最终找到了使用 lidstdc++.6 的文件

【讨论】:

  • 你可以确定是查看dylibs还是主二进制文件,我猜你可以运行(lldb) image lookup -rn cout your_app?至少您会了解 C++ 链接库是包含在您的主二进制文件(作为静态框架)还是动态框架中?也就是说,您必须知道使用反汇编程序来检查应用程序内部的 C++ 符号。但是,这不是一个超级快速的解决方案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-25
  • 1970-01-01
  • 1970-01-01
  • 2017-04-07
  • 1970-01-01
相关资源
最近更新 更多