Xcode出现( linker command failed with exit code 1)错误总结

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Xcode出现( linker command failed with exit code 1)错误总结相关的知识,希望对你有一定的参考价值。

这种问题,通常出现在添加第三方库文件或者多人开发时。

这种问题一般是找不到文件而导致的链接错误。 我们可以从如下几个方面着手排查。

先可以再试试一下几个方法: 

1,看看是不是有新添加的文件跟之前文件同名

2,错误信息中出现了某个类的名字,去原文件中看看#import了哪些第三方库,把这些库挨个注释排除,找到出错的那个库,然后按照官方提供的步骤重新添加一遍。

3.SVN或git忽略了某些文件,如.o 等文件没能update下来,查看.o文件可能是红色的,可以重新添加或者修改SVN(git)的忽略设置

4.把.a文件删除再重新拖到项目中解决问题

5.可能重复添加了文件(也可能没勾选 Copy items if neded 这个选项),建议删除后重新添加

6.工程中文件名重复了 也会出现同样的错误

7.”Build Settings”->”Enable Bitcode”设置为NO ,因为有些SDK不支持Bitcode

8.可能在引用的时候 可能写的是#import "XXXXX.m" ,如果是改为#import "XXXXX.h" 

9.可能你导入的SDK只能在真机下才能运行,模拟器会报错!

以如下错误为例,通过cocoa Pods安装AFNetworking后, 出现如下的错误。

技术分享

 

该情况为和工程中的文件同名, 因为在通过cocoa Pods安装AFNetworking前, 已经添加了该框架. 完全删除之前的, 工程运行.

 

如果是多人开发,你同步完成后发现出现如下的错误。

  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, 如下图

 

技术分享

如果没有勾选上,点击勾选。然后编译查看。

 

如果是新添加的第三方库,且不是静态库

先重复第一步过程,然后找到 Build settings->Linking->Other Linker Flags

技术分享

将此属性修改成-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,搞定。

1、Framework Search Paths

附加到项目中的framework(.framework bundles)的搜索路径

2、Library Search Paths

附加到项目中的第三方Library(.a files)的搜索路径,Xcode会自动设置拖拽到Xcode中的.a文件的路径.

 

以上是关于Xcode出现( linker command failed with exit code 1)错误总结的主要内容,如果未能解决你的问题,请参考以下文章

Xcode出现( linker command failed with exit code 1)错误总结

linker command failed with exit code 1 (use -v to see invocation),经典Xcode编译错误的出现和解决!

Cordova XCode app build clang error linker command failed on Launch Navigator

Xcode真机报错clang: error: linker command failed with exit code 1 (use -v to see invocation)

linker command failed with exit code 1

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