天天看点

iOS12和Xcode10 中 “library not found for -lstdc++.6.0.9 ”在cocoapods中的兼容问题

iOS12中 “library not found for -lstdc++.6.0.9 ”在cocoapods中的兼容问题

    • 产生问题的原因
    • 解决的思路
    • 解决的方法
    • 总结

产生问题的原因

原因是苹果在XCode10和iOS12中移除了libstdc++这个库,由libc++这个库取而代之。

解决的思路

由于在大多数的iOS工程中都会用到cocoapods来管理项目所需的第三方库代码,而所用的第三方库中并不是很及时的针对iOS或者Xcode的版本的更新而更新,亦或者我们在用pod的时候固定的历史版本,那pod中出现库的不兼容在所难免,所以我们在处理Xcode以及iOS12的兼容性问题时候就要将cocoapods中的工程配置考虑进来。

所以我们不光在本工程的Target下去清理lstdc++.6.0.9库的相关链接也要清理cocoapods工程及target的lstdc++.6.0.9链接。

解决的方法

那么下面我就列出我遇到问题的解决方法,如下:

  1. 清理Pods-PROJECT_NAME.debug.xcconfig ,在你主项目工程所依赖的pod工程下Targets Support Files/Pods-PROJECT_NAME/Pods-PROJECT_NAME.debug.xcconfig文件中搜索并删除**-l"stdc++.6.0.9"**这句话
  2. 清理Pods-PROJECT_NAME.release.xcconfig ,同理在你主项目工程所依赖的pod工程下Targets Support Files/Pods-PROJECT_NAME/Pods-PROJECT_NAME.release.xcconfig文件中搜索并删除**-l"stdc++.6.0.9"**这句话
  3. 清理主工程下的相关库链接,工程中依赖三方及系统库的地方有以下几个地方,如果有发现stdc++.6.0.9的影子就一并删除掉;

    a.在build setting下 Other Linker Flags中寻找stdc++.6.0.9并删除

    iOS12和Xcode10 中 “library not found for -lstdc++.6.0.9 ”在cocoapods中的兼容问题
    b.在Build Phases下Link Binary With Libraries中寻找stdc++.6.0.9并删除
    iOS12和Xcode10 中 “library not found for -lstdc++.6.0.9 ”在cocoapods中的兼容问题

总结

此博文中的lstdc++.6.0.9问题相信在以后的iOS及Xcode版本更新都会遇到类似的问题,此方法都可以作为借鉴。

在我们的工作和学习中类似的问题会时常发生,所以我们要总结问题的共性,以及出现问题的原理,以便我们下次遇到问题会有清晰的解决思路。

继续阅读