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链接。
解决的方法
那么下面我就列出我遇到问题的解决方法,如下:
- 清理Pods-PROJECT_NAME.debug.xcconfig ,在你主项目工程所依赖的pod工程下Targets Support Files/Pods-PROJECT_NAME/Pods-PROJECT_NAME.debug.xcconfig文件中搜索并删除**-l"stdc++.6.0.9"**这句话
- 清理Pods-PROJECT_NAME.release.xcconfig ,同理在你主项目工程所依赖的pod工程下Targets Support Files/Pods-PROJECT_NAME/Pods-PROJECT_NAME.release.xcconfig文件中搜索并删除**-l"stdc++.6.0.9"**这句话
-
清理主工程下的相关库链接,工程中依赖三方及系统库的地方有以下几个地方,如果有发现stdc++.6.0.9的影子就一并删除掉;
a.在build setting下 Other Linker Flags中寻找stdc++.6.0.9并删除
b.在Build Phases下Link Binary With Libraries中寻找stdc++.6.0.9并删除
总结
此博文中的lstdc++.6.0.9问题相信在以后的iOS及Xcode版本更新都会遇到类似的问题,此方法都可以作为借鉴。
在我们的工作和学习中类似的问题会时常发生,所以我们要总结问题的共性,以及出现问题的原理,以便我们下次遇到问题会有清晰的解决思路。