linker command failed with exit code 1

关于这个错误 好多 初步入门者 很头痛,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

原文地址:https://www.cnblogs.com/isItOk/p/6243528.html