废弃第三方库导致的library not found for -lXXXXX(linker command failed ) 完美解决方法

编译错误是让人头疼错误,它没有指向具体代码而是指向第三方库的编译错误。有的库可能我们以前使用,现在不再使用,把它删除了或通过Podfile文件修改重新更新了,但是它还是给我们捣乱。通常是对它没有删除干净引起了。通常有四种解决方案:

方法一:点击 XCode 工程文件,在 Build Phases 中查看 “ Link binary With Libraries”
如果不出所料,你应该能发现有一到数个的条目是用红色字体来显示的。
说明这些被工程引用的这些文件,其物理文件已经不处于之前所记录的地方了。
这种情况下,右键点击红色条目,选择 “Reveal in Project Navigator”,
此时大抵能在左侧栏中定位到缺失文件所在的路径,接下来就好办了,找到缺失的文件,挪回它应该待的地方。如果这个库你不想用了,删除就可以了。
方法二:在工程的 Target 中选中要执行编译的某个target, 然后 “get info”,打开 Build 设置页面,在 “ Library Search Path” 中添加缺失链接库的所在文件夹的路径。
方法三:关闭Xcode,在控制台打开到工程目录,用pod install 命令重新安装,成功后再打开Xcode编译项目。这个是个人组件版本更新,你的本地私有库还是使用的原来版本。
方法四:检查在工程的 Target 中选中要执行编译的某个target, 打开 Build 设置页面,查找Other Linker Flags.看你使用还有-l”FBRetainCycleDetector”或-l”MLeaksFinder”这些你删除的库。
我的编译不通过就是通过方法四解决的。测试环境需要使用无侵入式内存泄漏第三方库”MLeaksFinder”,它依赖另一个库”FBRetainCycleDetector”。
正式环境我们不用内存检测库”MLeaksFinder”,通过修改Podfile文件(#pod ‘MLeaksFinder’,’0.2.1’),让后使用命令pod update –verbose –no-repo-update来删除这个库。当更新完成,打包时报这个错误。
这里写图片描述
找了很多地方也没有找到那里还有FBRetainCycleDetector,第一到三种方法都试了都没有发现异常,最好还时感觉时工程文件引用的,就一个一个包含头文件的配置项查找。终于在Other Linker Flags找到了真凶。
这里写图片描述
把和它相关的两个配置删除,再打包就正常了。

另外注意:苹果商店app版本是三分段式的,2.4.1.1这个在提交时直接驳回。2.4.0才是正确的格式。

猜你喜欢

转载自blog.csdn.net/jia12216/article/details/80351473
今日推荐