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

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

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

3.SVN或git忽略了某些文件,如.o 等文件沒能update下來,查看.o文件多是紅色的,能夠從新添加或者修改SVN(git)的忽略設置ios

4.把.a文件刪除再從新拖到項目中解決問題git

5.可能重複添加了文件(也可能沒勾選 Copy items if neded 這個選項),建議刪除後從新添加xcode

6.工程中文件名重複了 也會出現一樣的錯誤函數

7.」Build Settings」->」Enable Bitcode」設置爲NO ,由於有些SDK不支持Bitcodeui

8.可能在引用的時候 可能寫的是#import "XXXXX.m" ,若是是改成#import "XXXXX.h" code

9.可能你導入的SDK只能在真機下才能運行,模擬器會報錯!

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

  1. Undefined symbols for architecture armv7:  
  2.   "_OBJC_CLASS_$_MyPageLogViewController", referenced from:  
  3.       objc-class-ref in BaiduMobStatAppDelegate.o  
  4. ld: symbol(s) not found for architecture armv7  
  5. clang: error: linker command failed with exit code 1 (use -v to see invocation)  


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

 

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

 

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

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

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

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

  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  添加靜態庫的相應路徑。

庫路徑錯誤的狀況:

  • 錯誤以下,這表示是查詢 Library 的時候出現的異常。

"directory not found for option '-L/..."

解決方法:

依次 Project -> targets -> Build Setting -> Library Search Paths

刪除裏面的路徑

  • 錯誤以下, 這表示是查詢 Framework 的時候出現的異常。

"directory not found for option '-F/..."

解決方法:

依次 Project -> targets -> Build Setting -> Framework Search Paths

刪除裏面的路徑

OK,搞定。

一、Framework Search Paths

附加到項目中的framework(.framework bundles)的搜索路徑

二、Library Search Paths

附加到項目中的第三方Library( .a files)的搜索路徑,Xcode會自動設置拖拽到Xcode中的.a文件的路徑.
 
狀況1
在工做左邊導航欄Target-->Build Phases-->compile Sources中,第三庫庫的全部.m文件都添加到裏面,而後編譯經過了;

狀況二、

 

linker command failed with exit code 1 (use -v to see invocation)

出現這種狀況極可能是,項目中引入了多個相同的文件。刪除一個就ok!
狀況三、

xcoder的一個編譯錯誤:

 

linker command failed with exit code 1 (use -v to see invocation)

 

說明有沒法準確找到的函數,函數有重複現象。

 

形成這個錯誤的緣由是我直接在 .h頭文件中實現了幾個函數,而後這個頭文件又被別的.c文件所引用,有實現的。

 

因此解決辦法是把實現的幾個函數單出一個.c文件裏去。這樣就ok了。

 

狀況四、

把 Valid Architectures  的值改成 armv7

過程:

PROJECT --> Build Settings --> Architectures --> Valid Architectures  他的值原本是 armv7 armv7s  (ios6.0下)  把armv7s 去掉便可

一樣的操做

TARGETS -->  Build Settings --> Architectures --> Valid Architectures  作一樣的修改

 

 
狀況五、 很奇葩的狀況啊,就是引用第三方的靜態庫.a 出現了問題. 在模擬器和真機引入的靜態庫是分開的!!!固然若是你的靜態庫作成了統一的,那就不會出現狀況5. 
相關文章
相關標籤/搜索