iOS开发中Xcode编译错误 linker command failed with exit co

iOS开发中Xcode编译错误 linker command failed with exit code 1 (use -v to see invocation) 的解决办法

发表于2015/5/15 8:54:36  220人阅读ios

分类: iOS objective-cobjective-c

版权归Aaidong全部〜转载需声名〜  欢迎你们访问:http://blog.csdn.net/aaidongxcode

clang: error: linker command failed with exit code 1 (use -v to see invocation) 的Xcode错误调试,在iOS开发中算是一个最多见的错误。可是出现这个错误的状况却有好多种,如下总结但愿能够对你们有点帮助。

状况1:
    当想用某个第三方类库的时候(如SBJson),我直接把类库文件copy到工程目录里面,而后一编译就出现这样错误(并非必定会出这样错误),开始觉得是网上下载的类库自己问题,因此从新找类库或者其余方式将它添加进去,只要不出错就行,也一直没有深刻了解根本问题,今天在给工程添加一个FMDB(SQLIte第三方类库)文件编译时又出现这种错误,一开始觉得工程问题,可是新建工程后仍是出现这个问题,通过网上查找,获得了解决办法;

Undefined symbols for architecture i386:  
  "_OBJC_CLASS_$_FMDatabase", referenced from:  
      objc-class-ref in ViewController.o  
ld: symbol(s) not found for architecture i386  
clang: error: linker command failed with exit code 1 (use -v to see invocation)  

在网上获得解决办法是:
在工做左边导航栏Target-->Build Phases-->compile Sources中,第三库库的全部.m文件都添加到里面,而后编译经过了;
对于以上错误,根据网友解答个人理解是:
咱们在使用这些第三方类库文件时直接将其拖拽到工程之中,编译的的时候Xcode也没有自动引用,因此形成这样错误,这就须要咱们手动添加。
 http://blog.hsin.tw/2012/ios-dev-undefined-symbols-for-architecture-i386/

状况2:
出现这种状况极可能是,项目中引入了多个相同的文件。删除一个就ok!

状况3:
和2很相似。
说明有没法准确找到的函数,函数有重复现象。
形成这个错误的缘由是我直接在 .h头文件中实现了几个函数,而后这个头文件又被别的.c文件所引用,有实现的。
因此解决办法是把实现的几个函数单出一个.c文件里去。这样就ok了。

状况4:
有可能你使用的某个第三方库不支持arm64(或armv7s)
把 Valid Architectures  的值 去掉arm64
过程:
PROJECT --> Build Settings --> Architectures --> Valid Architectures  他的值原本是 arm64 armv7 armv7s  把armv64 去掉便可
一样的操做
TARGETS -->  Build Settings --> Architectures --> Valid Architectures  作一样的修改
可是注意:这只是暂时解决了你的目前的编译问题。(建议更换实现方法更为稳当)

状况5: 
很奇葩的状况啊,就是引用第三方的静态库.a 出现了问题. 在模拟器和真机引入的静态库是分开的!!!固然若是你的静态库作成了统一的,那就不会出现状况5.

状况6:
在xcode中新建了一个.c  不管写什么都会报
clang: error: linker command failed with exit code 1 (use -v to see invocation)
解决办法:在Build settings->Linking->Other Linker Flags,添加属性-all_load,试试。

状况7:
把项目上传到SVN仓库上,而后再拉到本地编译时出现以下错误
ld: library not found for -lxxxxxxxxxxxx  
clang: error: linker command failed with exit code 1 (use -v to see invocation)  
缘由:
SVN在上传资源服务器时默认配置会把一些第三方的.a库文件等给忽略了,而后就形成这样的错误。
解决办法:
配置global-ignores文件服务器

相关文章
相关标签/搜索