zoukankan      html  css  js  c++  java
  • 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只能在真机下才能运行,模拟器会报错!

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

    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文件的路径.
     
    情况1
    在工作左边导航栏Target-->Build Phases-->compile Sources中,第三库库的所有.m文件都添加到里面,然后编译通过了;

    情况2、

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

    出现这种情况很可能是,项目中引入了多个相同的文件。删除一个就ok!
    情况3、

    xcoder的一个编译错误:

     

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

     

    说明有无法准确找到的函数,函数有重复现象。

     

    造成这个错误的原因是我直接在 .h头文件中实现了几个函数,然后这个头文件又被别的.c文件所引用,有实现的。

     

    所以解决办法是把实现的几个函数单出一个.c文件里去。这样就ok了。

    情况4、

    把 Valid Architectures  的值改为 armv7

    过程:

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

    同样的操作

    TARGETS -->  Build Settings --> Architectures --> Valid Architectures  做同样的修改

     
    情况5、 很奇葩的情况啊,就是引用第三方的静态库.a 出现了问题. 在模拟器和真机引入的静态库是分开的!!!当然如果你的静态库做成了统一的,那就不会出现情况5. 
  • 相关阅读:
    November 13th 2016 Week 47th Sunday The 1st Day
    November 12th 2016 Week 46th Saturday
    November 11th 2016 Week 46th Friday
    November 10th 2016 Week 46th Thursday
    November 9th 2016 Week 46th Wednesday
    November 8th 2016 Week 46th Tuesday
    windows 7文件共享方法
    Win7无线网络共享设置方法
    常量指针和指针常量
    如何查找局域网的外网ip
  • 原文地址:https://www.cnblogs.com/xsyl/p/6085844.html
Copyright © 2011-2022 走看看