ld: library not found for -XXX的五种解决方法

一般来说,报这个错是某个库的链接有问题。

解决方法

1、在Build Phases > Link Binary With Libraries,删除引用再重新添加引用。

2、在Build Setting > Library Search Path,检查搜索路径。
将多余的路径删除,或者添加缺失的路径。多余路径一般是添加了某个第三方库,后面又移除而残留的。

3、在 Edit Scheme > build,添加pod target
正常情况是不用添加的。我遇到的情况是,run没问题,但archive的时候报ld: library not found for -lAFNetworking,仔细一看发现archive过程根本就没compile第三方库,所以手动添加编译选项。

image.png

4、关于ld: library not found for -lPods-[ProjectName]
有时候,缺失的不是第三方的library,而是[ProjectName].a。至于这个[ProjectName].a是怎么生成的,暂时无法分析,也无法知晓这个.a文件为何就不存在了。初步猜测是和Pod有关。
解决方法:在Build Phases > Link Binary With Libraries,删除libPods-[ProjectName].a

5、关于use_frameworks!导致的报错
如果你的podfile文件,之前没有使用use_frameworks!,后来因为要使用Swfit编写的库而使用了use_frameworks!,那么你有很大几率遇到library not found的问题。原因是:如果没有使用use_frameworks!,第三方库是以library的形式存在于工程中的,一旦你使用了use_frameworks,第三方库的存在形式就变成framework了。之前在other linker flags里,以-l开头的依赖都将失效,报错就是就是这么产生的。例如:ld: library not found for -lAFNetworking
解决方法:将other linker flags里带-l开头的第三方库依赖删除。建议一个一个操作,避免误删。

参考链接

Cocoapods ld: library not found for -lPods-Projectname

你可能感兴趣的:(ld: library not found for -XXX的五种解决方法)