天天看點

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版本更新都會遇到類似的問題,此方法都可以作為借鑒。

在我們的工作和學習中類似的問題會時常發生,是以我們要總結問題的共性,以及出現問題的原理,以便我們下次遇到問題會有清晰的解決思路。

繼續閱讀