关于这个错误 好多 初步入门者 很头痛,xcode 只给出 一句
linker command failed with exit code 1 好多人觉得不好下手
其实 xcode 还给了你 其他的信息。 举个栗子 ,如下:
ld: warning: ignoring file /Volumes/Xcode/Xcode.app/Contents/Developer/Library/Frameworks/SenTestingKit.framework/SenTestingKit, missing required architecture armv7 in file
ld: duplicate symbol _OBJC_METACLASS_$_MMApiRegister in /Users/wangbin/Desktop/00_ios/hezi_ios08/WXSDK/libWeChatSDK.a(WeChatRegister.o) and /Users/wangbin/Desktop/00_ios/hezi_ios08/WXSDK/libWeChatSDK.a(WeChatRegister.o) for architecture armv7
clang: error: linker command failed with exit code 1 (use -v to see invocation)
主要解决思路如下:
* 这个就需要 定位 这个 的 上面的内容 missing required architecture armv7 in file 中文意思 是 少了 architecture armv7 。也就是说 arm 7 没有 添加 或者 是 新引入的静态库 出了问题。 这样一来 不就 很好解决了。
* 还有的是因为 文件 没有加载全 , Build settings->Linking->Other Linker Flags,将此属性修改成-all_load
* 有时候 Other Linker Flags下的配置 写的与工程里面的代码 或者 第三方库 冲突了 也会引起这种问题。 将Other Linker Flags下 不必要的配置删除(多人工程容易出现这种情况)
* 工程中文件名重复了 也会出现同样的错误 看看是不是有新添加的文件跟之前文件同名
* 在将文件引入工程时 由于粗心 没有勾选 Copy items if neded 这个选项.
* ”Build Settings”->”Enable Bitcode”设置为NO 因为有些SDK不支持Bitcode
* 引入文件时引入的是.m文件 在引用的时候 可能写的是#import "XXXXX.m" ,如果是改为#import "XXXXX.h"
* .a用SVN没有下载下来,用SVN的低版本容易出这个错误
* 有时候在模拟器上运行报这种类似的错误 ,是因为你加入的这个.a文件不支持模拟器,只有真机运行才可以,到官网上下载一个更全面的替换掉就可以啦
* 在post -> Build Settings -> Architectures -> Build Active Architecture Only 把Yes改成No
* 错误信息中出现了某个类的名字,去原文件中看看#import了哪些第三方库,把这些库挨个注释排除,找到出错的那个库,然后按照官方提供的步骤重新添加一遍。
* SVN或git忽略了某些文件,如.o 等文件没能update下来,查看.o文件可能是红色的,可以重新添加或者修改SVN(git)的忽略设置
* 把.a文件删除再重新拖到项目中解决问题
* 可能重复添加了文件建议删除后重新添加
* 一个类中自定义创建的父类没有implementation部分,在此基础上继承的子类就报这样的错误了
* 在不同的地方命名了相同的静态变量,不过这个真机调试不报错,模拟器运行的时候报错了
* 将旧版本xcode环境下 开发的工程移动到最新xcode 有时 可能造成不兼容 而 引发问题,需要在终端下 将 xcode7 的 工程里 移除 一个 文件,具体 记不清了。 有遇到的 直接 搜索 关键字 就会 出来 解决方案
虽然造成这种问题 不好定位,但是 还是有迹可循的。 自己的工程自己最清楚 ,自己 改动了 哪里 后 出现的这种情况 ,就重点排查 最近的改动 ,一准跑不了,哈哈
这篇文章 写得 也很好 链接 如下 http://blog.csdn.net/u012847940/article/details/51333285