error: linker command failed with exit code 1 (use -v to see invocation)可以说是我们做开发遇到的最多的一个问题了,下面说下我遇到这个问题曾经解决的方案
解决方案1:
回忆你最近刚刚写的文件,找到之后查看是否在.m文件中的头文件导入的时候导入的是一个.m文件 ,如果是这样的话,替换你所需要的头文件的.h文件编译既可以通过。
解决方案2:
更改bitcode属性为no一般在打包的时候会有这个问题,这里的解决方案是在Xcode中来到Build settings中 搜索bitcode 然后更改属性为No既可以编译通过附带截图如下
解决方案3:
搜索link 添加-ObjC如果之前的解决方案行不通不急 ,继续以下方案 .在Xcode中来到Build settings中 搜索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 命令 ,更新所有的第三方之后应该即可编译通过
感谢小伙伴的认真学习,如果我的方法有帮到你,点个❤️支持一下吧~
网友评论