美文网首页
iOS 中处理的编译链接错误

iOS 中处理的编译链接错误

作者: 闻人歌 | 来源:发表于2017-09-05 11:25 被阅读185次

在项目运行时,可能会出现一些编译错误.

-L 错误

如:

directory not found for option '-L/Users/xxx/Library/Developer/Xcode/DeriveData

紧接其后的是未发现一些第三方框架,如:Masonry等的路径.
这是在使用 Cocoa pods 后,编译产生的第三方库的问题.

  • 首先,你需要确定你打开的是 xxx.xcworkspace 文件而不是 xcodeproj文件
  • 其次,你报的错是- L 说明是出现Library 出现了问题. 你需要选中 target --> buildSetting ,搜索 lib,找到 Library Search Paths
  • 这里存放外部引用的库的搜索路径,通常是 $(inherits),其后是一些你导入的第三方库的地址;将后面的库文件地址删除,保留$(inherits),然后编译
  • 如果,上面编译不通过,stackoverflow 上说,可以尝试将$(SRCROOT)替换 $(inherits),不过这个我没有成功,好像是适用于 xcode 5
  • 最后的办法,重置所有的第三方库文件.删除pod 文件夹,pod 的 file,lock 文件,进入项目,删除红色部分;进入 target --> build phases 中删除pod 相关的 phases. 然后重建pod.

指令集编译错误

  • 现在的 xcode 中通常使用 x86,armv7,armv7s 3中编译指令,在某些时候也会出现编译错误,比如升级 xcode8 后,导入其他人的项目.有些确实是 xcode 自身的 bug,我们无法处理.stackoverflow 也无法找到答案
  1. 关闭bitcode:进入 target --> build setting -->搜索 bitcode -->build options ,关闭 bitcode
  2. 无法处理的话,将编译指令兼容: targt --> buildsetings,把 build Archive Architetures only 设置为 YES
  3. 导入的包不对,将需要的包,如地图,推送的包重新导入
  4. 如果打包的时候出现 armv7的错误,或者 armv7s 的架构错误,可以尝试清除打包文件,重新登录开发者帐号
  5. 最后的办法,出现 x86的架构错误,不用模拟器,直接手机运行调试.如果打包出现 armv7错误,进入 build setting --> 搜索 arm --> Valid Architectures 中 ,删除 armv7.当然,删除后会导致项目不适配 iPhone4s 及以下的手机. 如果上述方法不行,仍然报 armv7s,你去其他地方找找,有答案请评论
  • Undefined symbols for architecture arm64:"OBJC_CLASS$_xxx", referenced from: someFile
    ld: symbol(s) not found for architecture arm64
    编译的时候产生 arm64 编译指令集错误,可能是导入的库文件或者新的类文件引用了某个项目中已有的第三方库文件
    1 .对于新加入的第三方库文件:可以使用lipo -info 路径/xxx.a命令在终端查看这个库适用那些编译指令集

  • Undefined symbols for architecture arm64: "OBJC_CLASS$_XXX", referenced from: objc-class-ref in RouteSearchVC.o ";是指在程序编译的时候,RouteSearchVC 类的编译文件在 arm64的指令集中,xxx 类出现了错误.
    一般在将某个类文件导入当前项目中回出现这种错误,解决办法:target ->build phases -> compile sources,在这里面将么有导入的文件重新添加

参考地址:解决OBJC_CLASS$_XXX的问题

  1. 如果项目中导入某个类简单的类文件,出现 arm64 报错,先检查build setting 中ArchitecturesValid Architectures,是否有错误,没有错,就按图修改Other Linker Flags:

If your Architectures and Valid Architectures are all right, you may check whether you have added $(inherited), which will add linker flags generated in pods, to Other Linker Flags as below:

添加$(inherited) .png

相关文章

  • iOS 中处理的编译链接错误

    在项目运行时,可能会出现一些编译错误. -L 错误 如: directory not found for opti...

  • iOS 预编译指令

    一、简介 预编译指令在iOS 中的主要功能:1、宏定义2、条件编译3、文件包含4、错误、警告处理5、编译器控制 二...

  • 编译和链接

    编译和链接 预处理 编译 汇编 链接 预处理(prepress) 处理#开头的预编译指令。 #include:包含...

  • xcode 编译 系统 深入学习(待续)

    前言 ios 开发中经常遇到编译链接的错误:头文件找不到,symbol 没定义等错误。经常需要配置工程build ...

  • Protobuf的一个链接错误

    Xcode 中编译protobuf, 编译没有问题,上层库链接protobuf库的时候报6链接错误 : 排查:函...

  • Xcode常见报错锦囊

    此篇我将罗列出iOS开发中,Xcode编译器出现的常见错误,警告视同为错误处理。(序号只做排序用) 1.死存储问题...

  • 编译链接过程gcc以及Makefile

    编译链接过程 预处理 ----> 编译 ----> 汇编 ----> 链接 预处理:任务:处理宏定义,文件包含,条...

  • iOS 壁纸类项目核心总结

    iOS解析M3U8文件及TS文件下载与合并iOS下编译FFmpeg的经验及各种错误收集处理# iOS开发 - 超详...

  • XCode/iOS 常见编译错误、链接错误浅谈

    楔子 俗话说使出必有因,笔者写这篇文章也是源自这两天遇到的一个具体问题。笔者公司产品新版APP提出需求,要在一富文...

  • 编译链接过程

    编译链接过程 一个完整的编译链接过程包含了以下步骤: 预编译 编译 汇编 链接 预编译 预编译的处理规则如下 删除...

网友评论

      本文标题:iOS 中处理的编译链接错误

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