error: linker command failed with exit code 1 (use -v to see invocation)的幾種解決方案

error: linker command failed with exit code 1 (use -v to see invocation)可以說是我們做開發(fā)遇到的最多的一個問題了,下面說下我遇到這個問題曾經(jīng)解決的方案


報錯的文件截圖

解決方案1:

回憶你最近剛剛寫的文件,找到之后查看是否在.m文件中的頭文件導(dǎo)入的時候?qū)氲氖且粋€.m文件 ?,如果是這樣的話,替換你所需要的頭文件的.h文件編譯既可以通過。

解決方案2:

一般在打包的時候會有這個問題,這里的解決方案是在Xcode中來到Build settings中 ?搜索bitcode ?然后更改屬性為No既可以編譯通過附帶截圖如下?


更改bitcode屬性為no

解決方案3:

如果之前的解決方案行不通不急? ,繼續(xù)以下方案 .在Xcode中來到Build settings中? 搜索link ?然后添加-Objc關(guān)鍵文字, 既可以編譯通過附帶截圖如下


搜索link


添加-ObjC

如果解決問題3沒有編譯通過 ?嘗試加入-all_load 關(guān)鍵字再次編譯。

解釋說明:

-ObjC

這個flag告訴鏈接器把庫中定義的Objective-C類和Category都加載進來。這樣編譯之后的app會變大(因為加載了其他的objc代碼進來)。但是如果靜態(tài)庫中有類和category的話只有加入這個flag才行。

-all_load

這個flag是專門處理-ObjC的一個bug的。用了-ObjC以后,如果類庫中只有category沒有類的時候這些category還是加載不進來。變通方法就是加入-all_load或者-force-load。-all_load會強制鏈接器把目標(biāo)文件都加載進來,即使沒有objc代碼。-force_load在xcode3.2后可用。但是-force_load后面必須跟一個只想靜態(tài)庫的路

最終的結(jié)果是這樣的


添加的按鈕-all_load


添加之后的結(jié)果

解決方案4:

如果可悲的伙伴上述的方案依然沒有解決你的問題,那么不要灰心。小編在教你幾招

如果經(jīng)過上面的嘗試依然沒有解決問題,那么應(yīng)該就是你的第三方的問題了,查看最近加入的第三方框架是否添加了必要的依賴庫,可以重新查找在一一添加對應(yīng)的第三方框架所需要的依賴庫,在編譯看看是否解決了你的問題哪?


添加對應(yīng)的第三方庫的方法和路徑

添加成功后的依賴庫:

添加需要的依賴庫

最后編譯一下看看是不是通過了那??

解決方案5:

經(jīng)過上面的方法你依然沒有通過 ?也是醉了的情況 。小編告訴你最后一招就是編輯你的podfile文件,可以考慮把之前pod的文件全部重新刪除,然后重新添加,如果你可以定位到大致是哪個第三方的問題,可以在pod之前不需要添加指定版本號。

比如你使用的是pod 'ReactiveObjC', '~> 3.0.0'? 可以把, '~> 3.0.0'去掉 在重新pod install一下重新編譯 假如使用的是pod 'ReactiveObjC' ?這種方式默認(rèn)是使用最新的第三方。

如果編譯還沒有通過 ?重新加載第三方,使用pod update 命令 ,更新所有的第三方之后應(yīng)該即可編譯通過

感謝小伙伴的認(rèn)真學(xué)習(xí),如果我的方法有幫到你,點個??支持一下吧~


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容