關於cocopods更新第三方庫報ld: library not found for -lXXXXXX錯誤

zhaoguian發表於2018-04-11

昨天更新專案第三方庫出現了Undefined symbols for architecture x86_6(arm64)錯誤,有關於這個錯誤的請檢視上一篇文章,話題至此我們們看看今天得問題。

今天我更新更新的是另一個專案的第三方類庫SDK,更新完之後報ld: library not found for -lXXXXXX,這個錯誤是說編譯時找不到XXXXXX這個連結庫,但是我在專案程式碼中找到對引用的地方,沒有其他異常。有三種解決方法。

方法一:點選 XCode 工程檔案,在 Build Phases 中檢視 “ Link binary With Libraries”

如果不出所料,你應該能發現有一到數個的條目是用紅色字型來顯示的。 說明這些被工程引用的這些檔案,其物理檔案已經不處於之前所記錄的地方了。 這種情況下,右鍵點選紅色條目,選擇 “Reveal in Project Navigator”, 此時大抵能在左側欄中定位到缺失檔案所在的路徑,接下來就好辦了,找到缺失的檔案,挪回它應該待的地方。

方法二:在工程的 Target 中選中要執行編譯的某個target, 然後 “get info”,開啟 Build 設定頁面,在 “ Library Search Path” 中新增缺失連結庫的所在資料夾的路徑。

本來看到這兩種方法時覺得第一種應該就能解決了,因為報錯的資訊看起來就像是原來的檔案引用不到了而已,但是當我按照第一種方法去做時,發現“ Link binary With Libraries” 下沒有紅色的條目,而且本來就沒有XXXXXX這個條目,所以第一種方法不適用。第二種方法也不對,因為我們的專案很多庫是通過pod管理的,XXXXXX也是pod管理的庫之一。這時候我就想起可能是pod的原因,在嘗試了pod update無果後,發現了第三種解決類似問題的方法。

方法三:關閉Xcode,在控制檯開啟到工程目錄,用pod install 命令重新安裝,成功後再開啟Xcode編譯專案。

但是這三種方法都不適用,因為更行的第三方庫Podfile 檔案中的地址修改了導致之前的匯入的類庫名字沒有刪除而找不到,所以只能是又找的其他方法是工程執行的Target ---> Build Setting--->Other Linke Flags 把找不到的類庫名字刪除就可以了。 當然也有可能是倒入庫沒有加進去,根據自己的實際情況進行處理,一般上述的是三種方法就可以解決大部分問題。

相關文章