昨天更新專案第三方庫出現了
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
把找不到的類庫名字刪除就可以了。 當然也有可能是倒入庫沒有加進去,根據自己的實際情況進行處理,一般上述的是三種方法就可以解決大部分問題。