Xcode 6.1.1 的静态库和 cocoapods - ld: library not found 错误
Posted
技术标签:
【中文标题】Xcode 6.1.1 的静态库和 cocoapods - ld: library not found 错误【英文标题】:Static library and cocoapods with Xcode 6.1.1 - ld: library not found Error 【发布时间】:2015-03-07 22:36:59 【问题描述】:不确定它是否与 Xcode 6.1.1 或 Cocoapods 0.35.0 有关。
我已经使用 Xcode 6.1.1 生成了新的静态 ios 库。
成功(没有 cocoapods)
-
生成模拟器和设备库
Lipo 并生成 FAT MyLib.a 静态最终库
创建新的 View Application 项目。 (我没有更改任何默认设置。例如 Base SDK、Valid Architecture。)
手动将 MyLib.a 和必要的头文件添加到应用程序项目中。
构建应用程序项目并且它工作正常!没有错误没有警告。
错误
-
将相同的 MyLib.a 和标头(上面生成)上传到 HTTP 直接下载服务器(一种工件服务器)。
生成规范和 podfile。
从我之前手动完成的应用程序项目中删除所有依赖项(lib 和标头)。
添加 pod 文件和本地规范
“Pod install”命令在 /Pods 文件夹中正确拉出 MyLib.a 和标题。
但是在构建应用程序项目时给了我
Ld Build/Products/Debug-iphonesimulator/LibTest.app/LibTest normal x86_64
cd /Users/admin/Cocoapods/Project/Library/TestProject/LibTest
export IPHONEOS_DEPLOYMENT_TARGET=8.1
ld: library not found for -lMyLib
clang: error: linker command failed with exit code 1 (use -v to see invocation)
当我在 MyLib.a 上触发“lipo”命令时
fat文件中的架构:/Users/admin/Cocoapods/Project/Library/Libs/Final/MyLib.a是:armv7 armv7s i386 x86_64 arm64
这不是真正的架构问题,否则它应该在我没有 cocoapods 的第一次尝试中失败。 Cocoapods 做了一些构建配置更改,这会产生这个问题。
帮我解决这个问题。
【问题讨论】:
【参考方案1】:花了 2 天时间找出确切的问题后,我发现修复非常愚蠢。它基本上是静态库命名约定问题。 如果您在工件/媒体 http 服务器中有静态库并希望与 Cococapods 集成,请确保库名称应为 lib(your name).a 以及标头。
在我的情况下,我保留了 MyLib,它目前在“pod install”时被下载,但在应用程序构建期间它失败了。 重命名为 libMyLib.a 后,一切都对我有用。 :)
很容易应用但很难找到这样的解决方案]
不确定 cocoapods 是否在任何指南中记录了这一点。
【讨论】:
+1 是的,这是ld
默认查找库文件的方式,它应该以lib
为前缀,文件为libMyLib.a
,而实际的ld
链接器标志为-lMylib
。以上是关于Xcode 6.1.1 的静态库和 cocoapods - ld: library not found 错误的主要内容,如果未能解决你的问题,请参考以下文章