出現( linker command failed with exit code 1)錯誤總結

出現( linker command failed with exit code 1)錯誤總結


這種問題,一般出如今添加第三方庫文件或者多人開發時。html

這種問題通常是找不到文件而致使的連接錯誤。 咱們能夠從以下幾個方面着手排查。ui


1.以以下錯誤爲例,若是是多人開發,你同步完成後發現出現以下的錯誤。spa

[html] view plaincopy.net

  1. Undefined symbols for architecture armv7:  code

  2.   "_OBJC_CLASS_$_MyPageLogViewController", referenced from:  orm

  3.       objc-class-ref in BaiduMobStatAppDelegate.o  htm

  4. ld: symbol(s) not found for architecture armv7  blog

  5. clang: error: linker command failed with exit code 1 (use -v to see invocation)  圖片


錯誤中出現了「MyPageLogViewController」這個類,你能夠找到這個類的.m文件, 查看他的Target Membeship, 以下圖ip

若是沒有勾選上,點擊勾選。而後編譯查看。


2. 若是是新添加的第三方庫,且不是靜態庫

先重複第一步過程,而後找到 Build settings->Linking->Other Linker Flags


將此屬性修改爲-all_load  或者 -ObjC ,這個視狀況而定。總之能夠多試幾回。

此時咱們須要設置project的Info裏面的Link Flag處,增長-all_load,這樣會連接全部存在的symbol;

3.若是添加的是第三方靜態庫(.a文件)

[html] view plaincopy

  1. Undefined symbols for architecture armv7:  

  2.   "_OBJC_CLASS_$_BaiduMobStat", referenced from:  

  3.       objc-class-ref in BaiduMobStatAppDelegate.o  

  4.       objc-class-ref in MyPageLogViewController.o  

  5.      (maybe you meant: _OBJC_CLASS_$_BaiduMobStatAppDelegate)  

  6. ld: symbol(s) not found for architecture armv7  

  7. clang: error: linker command failed with exit code 1 (use -v to see invocation)  


在用到這個庫的全部文件中都出現了錯誤, 如上 BaiduMobStatAppDelegate 類和 MyPageLogViewController類

這種狀況就多是這個靜態庫路徑混亂致使的連接錯誤

解決方法:Build settings->Search Path->Library Search Paths  添加靜態庫的相應路徑。以下圖



若是上面的全部方法都無論用。你能夠再試試一下幾個方法:

1,看看是否是有新添加的文件跟以前文件同名

2,錯誤信息中出現了某個類的名字,去原文件中看看#import了哪些第三方庫,把這些庫挨個註釋排除,找到出錯的那個庫,而後按照官方提供的步驟從新添加一遍。


今天又遇到「linker command failed with exit code 1 (use -v to see invocation)」的問題,

最讓我鬱悶的是Xcode並不會指出具體錯誤的代碼,這讓一個新手找問題,變得更加困難,

下面大概總結一下我遇到的錯誤吧:

1. Storyboard 裏連接或者使用的圖片不存在。

解決:去掉Storyboard裏使用到的圖片便可。

2. 定義的類名與圖片名字重合(這點也實現讓我沒想通圖片名和類名爲何也不能相同)。

解決:修改兩個名字成不一樣名字,或者暫時註釋掉類名便可編譯成功。

大概是習慣了.NET 裏那種簡單優美的語法,到Objetive-c 這邊來,怎麼樣看代碼都不優美,沒有美感,不再會像在.NET 裏寫代碼一字值千金的感受了。

3. 使用到的第三方的庫 .a 文件不存在於本地。

解決: I :找到該庫,從新添加引用。

    II: 暫時註釋掉對該庫調用的代碼,便可編譯經過。

相關文章
相關標籤/搜索