頑固的 “l(fā)d: library not found for -l xxx”
升級 Xcode10 之后舀锨,運(yùn)行了一遍舊的項(xiàng)目雷激,報(bào)錯(cuò)如下:
1> 找不到 libstdc++.6.0.9.tbd 庫
之前有導(dǎo)入過?libstdc++.6.0.9.tbd驻粟,而這個(gè) Xcode10 已經(jīng)不支持了挤巡,換成了?libc++.tbd剩彬,所以只要在?Building Phases?里刪除?libstdc++.6.0.9.tbd,再重新添加?libc++.tbd?就好了矿卑。
2> 如下圖:
bug info
解決方法如下:
有可能是你的某個(gè)庫的連接引用有問題喉恋,Build Phases -> Link binary With Libraries,找到這個(gè) 刪除再加入母廷,然后編譯轻黑,此時(shí)該方法并不能解決本文的問題。??
當(dāng)正在開發(fā)時(shí)候琴昆,cocoapods 移除某一個(gè)框架以后氓鄙,會(huì)遇到?ld: library not found for -l xxxx-ios-x.x.x。
這種情況下是因?yàn)閷⒖蚣芤瞥笠瞪幔]有移除?Build Setting -> Other Linker Flag?中的引用抖拦,找到移除之后的框架,刪除引用即可勤讽。此時(shí)確實(shí)是找到了 這個(gè)?-lstdc++.6.0.9蟋座,刪除之后,重新編譯脚牍,然鵝還是不行向臀。??
升級 pods 之后,或者打開剛建好的 workspace 文件诸狭,會(huì)報(bào)錯(cuò)?ld: library not found for -lxxx券膀。
這個(gè)情況下是工程里面的設(shè)置項(xiàng)覆蓋了 pods 中?xcconfig?中的設(shè)置,解決辦法是在?Build Setting -> Other Linker Flag?中加上?$(inherited)驯遇,經(jīng)查看芹彬,在?Other Linker Flag?中其實(shí)已經(jīng)添加了這個(gè)。所以該方法不奏效叉庐。
后來腦海里面蹦出來 之前看到過有人在?xcconfig?中 刪除庫的操作舒帮,于是就嘗試了一下,果不其然陡叠,如下:
xcconfig
盡然在 Pods-工程名.debug.xcconfig 和 Pods-工程名.release.xcconfig 都 存在這個(gè)?stdc++.6.0.9?(納悶在?Build Setting -> Other Linker Flag?里面刪除這個(gè)?stdc++.6.0.9?為啥不影響?xcconfig)玩郊,按照這種方式刪除了所有有關(guān)的?stdc++.6.0.9?,然后重新運(yùn)行枉阵,眼前一片光明译红,再也沒有這個(gè)錯(cuò)誤了。
one more thing
warning:directory not found option 的問題可能是?framework search paths?還有?Library Search Paths?里面并沒有這個(gè)路徑兴溜,刪除即可侦厚。
duplicate 就是重復(fù)的意思耻陕,那么看代碼 要?jiǎng)h除重復(fù)的。