這種問題,一般出如今添加第三方庫文件或者多人開發時。html
這種問題通常是找不到文件而致使的連接錯誤。 咱們能夠從以下幾個方面着手排查。ui
1.以以下錯誤爲例,若是是多人開發,你同步完成後發現出現以下的錯誤。spa
[html] view plaincopy.net
Undefined symbols for architecture armv7: code
"_OBJC_CLASS_$_MyPageLogViewController", referenced from: orm
objc-class-ref in BaiduMobStatAppDelegate.o htm
ld: symbol(s) not found for architecture armv7 blog
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
Undefined symbols for architecture armv7:
"_OBJC_CLASS_$_BaiduMobStat", referenced from:
objc-class-ref in BaiduMobStatAppDelegate.o
objc-class-ref in MyPageLogViewController.o
(maybe you meant: _OBJC_CLASS_$_BaiduMobStatAppDelegate)
ld: symbol(s) not found for architecture armv7
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: 暫時註釋掉對該庫調用的代碼,便可編譯經過。