美文网首页程序员
error: linker command failed wit

error: linker command failed wit

作者: 字符管理师 | 来源:发表于2017-10-20 16:33 被阅读0次

    error: linker command failed with exit code 1 (use -v to see invocation)可以说是我们做开发遇到的最多的一个问题了,下面说下我遇到这个问题曾经解决的方案


    报错的文件截图

    解决方案1:

    回忆你最近刚刚写的文件,找到之后查看是否在.m文件中的头文件导入的时候导入的是一个.m文件  ,如果是这样的话,替换你所需要的头文件的.h文件编译既可以通过。

    解决方案2:

    一般在打包的时候会有这个问题,这里的解决方案是在Xcode中来到Build settings中  搜索bitcode  然后更改属性为No既可以编译通过附带截图如下 

    更改bitcode属性为no

    解决方案3:

    如果之前的解决方案行不通不急  ,继续以下方案 .在Xcode中来到Build settings中  搜索link  然后添加-Objc关键文字, 既可以编译通过附带截图如下

    搜索link 添加-ObjC

    如果解决问题3没有编译通过  尝试加入-all_load 关键字再次编译。

    解释说明:

    -ObjC

    这个flag告诉链接器把库中定义的Objective-C类和Category都加载进来。这样编译之后的app会变大(因为加载了其他的objc代码进来)。但是如果静态库中有类和category的话只有加入这个flag才行。

    -all_load

    这个flag是专门处理-ObjC的一个bug的。用了-ObjC以后,如果类库中只有category没有类的时候这些category还是加载不进来。变通方法就是加入-all_load或者-force-load。-all_load会强制链接器把目标文件都加载进来,即使没有objc代码。-force_load在xcode3.2后可用。但是-force_load后面必须跟一个只想静态库的路

    最终的结果是这样的

    添加的按钮-all_load 添加之后的结果

    解决方案4:

    如果可悲的伙伴上述的方案依然没有解决你的问题,那么不要灰心。小编在教你几招

    如果经过上面的尝试依然没有解决问题,那么应该就是你的第三方的问题了,查看最近加入的第三方框架是否添加了必要的依赖库,可以重新查找在一一添加对应的第三方框架所需要的依赖库,在编译看看是否解决了你的问题哪?

    添加对应的第三方库的方法和路径

    添加成功后的依赖库:

    添加需要的依赖库

    最后编译一下看看是不是通过了那? 

    解决方案5:

    经过上面的方法你依然没有通过  也是醉了的情况 。小编告诉你最后一招就是编辑你的podfile文件,可以考虑把之前pod的文件全部重新删除,然后重新添加,如果你可以定位到大致是哪个第三方的问题,可以在pod之前不需要添加指定版本号。

    比如你使用的是pod 'ReactiveObjC', '~> 3.0.0'  可以把, '~> 3.0.0'去掉 在重新pod install一下重新编译 假如使用的是pod 'ReactiveObjC'  这种方式默认是使用最新的第三方。

    如果编译还没有通过  重新加载第三方,使用pod update 命令 ,更新所有的第三方之后应该即可编译通过

    感谢小伙伴的认真学习,如果我的方法有帮到你,点个❤️支持一下吧~


    相关文章

      网友评论

        本文标题:error: linker command failed wit

        本文链接:https://www.haomeiwen.com/subject/npevuxtx.html