iOS测试分为模拟器测试和真机测试,处理器分为32位处理器,和64位处理器,

模拟器32位处理器测试需要i386架构,(iphone5,iphone5s以下的模拟器)

模拟器64位处理器测试需要x86_64架构,(iphone6以上的模拟器)

真机32位处理器需要armv7,或者armv7s架构,(iphone4真机/armv7,      ipnone5,iphone5s真机/armv7s)

真机64位处理器需要arm64架构。(iphone6,iphone6p以上的真机)

project -> target -> building setting -> Arhitectures 设置

debug属性设置为no的时候,会编译支持所有架构的版本,编译的速度会变慢,设置为yes 的时候,只编译当前的architecture版本,编译速度快。

一般情况下,debug 设置为yes,release为no,这样发行版本能适应不同设备,

Undefined symbols错误的解决方案整理

.h(声明文件)<————>.m(实现文件)

.h<————>.c

.hpp<————>.cpp

1》在源代码中,找不到一个标识符的声明,无论是变量名,类名,或者是方法名,编译的时候会得到

Use of undeclared identifier ‘XXX’错误。

2》在源代码中,如果编译器找到他的声明,却不知道他怎么实现的,或者说目标文件里没有这个实现,则就会出现链接错误。

Undefined symbols for architecture armv7(armv7处理器架构指令集下,符号未定义):

"_XCloseIM", referenced from:

dlib::gui_core_kernel_2_globals::event_handler_thread::~event_handler_thread() in gui_core_kernel_2.o

编译原理,在源码词法分析,语法分析以及编译的整个过程中,会生成符号表,所有标识符都会放到这个表中。 如果链接的时候,找不到具体的实现,就会出现这个错误。可能的原因有:

  • 引入了需要用到的库的头文件,却没有链接正确的实现库。因为Xcode本身所支持的库是Static Library,即.a的方式,.a的文件里只有实现,使用的时候需要另外引入头文件,那么就有可能把头文件放进来,没有放.a或放入了错误的版本。
  • Build Settings或者Build Phases配置有误。检查Build Phases里的Link Binary With Libraries和Build Settings里的几项Search Path。
  • 从外部导入的文件没有加入到特定的target中。这个正是我整理这篇日志之前遇到的,将.a、.m、.framework等引入到工程当中,却没有勾选当前Build的target,会出现这个问题,可以选中特定的文件,在右侧边栏中选中target。
  • 未包含处理器架构指令集的问题。报错时的提示一般都是“Undefined symbols for architecture armv7”之类的,而“for architecture armv7”就是说没有支持armv7,在Build settings里architecture相关的几项需要配置正确。
当源码运行出现这种错,解决办法是target-->build setting-->compile sources as 把混编语言改回objective-c 就可以了

Undefined symbols for architecture armv7:

"_UIApplicationMain", referenced from:

_main in main.o

"_OBJC_CLASS_$_UIResponder", referenced from:

_OBJC_CLASS_$_AppDelegate in AppDelegate.o

"_OBJC_METACLASS_$_UIViewController", referenced from:

_OBJC_METACLASS_$_ViewController in ViewController.o

"_OBJC_CLASS_$_UINavigationController", referenced from:

objc-class-ref in AppDelegate.o

"_OBJC_CLASS_$_UIWindow", referenced from:

objc-class-ref in AppDelegate.o

"_OBJC_CLASS_$_UIScreen", referenced from:

objc-class-ref in AppDelegate.o

"_OBJC_METACLASS_$_UIResponder", referenced from:

_OBJC_METACLASS_$_AppDelegate in AppDelegate.o

"_OBJC_CLASS_$_UIViewController", referenced from:

_OBJC_CLASS_$_ViewController in ViewController.o

ld: symbol(s) not found for architecture armv7

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

iOS关于armv7,armv7s,arm64,i386,x86_64等问题相关推荐

  1. 关于iOS 编译器 armv7 armv7s arm64 i386 x86_64

    armv7 armv7s arm64 是ARM处理器的指令集 i386 x86_64 处理的指令集 对应的设备 arm64:iPhoneX | iphone8 plus|iPhone8| iPhone ...

  2. iOS关于armv7,armv7s,arm64,i386,x86_64

    iOS测试分为模拟器测试和真机测试,处理器分为32位处理器,和64位处理器, 模拟器32位处理器测试需要i386架构,(iphone5,iphone5s以下的模拟器) 模拟器64位处理器测试需要x86 ...

  3. iOS armv7,armv7s, arm64

    目前ios的指令集有以下几种: armv6 iPhone iPhone2 iPhone3G 第一代和第二代iPod Touch armv7 iPhone4 iPhone4S armv7s iPhone ...

  4. 第26月第22天 iOS瘦身之armv7 armv7s arm64选用 iOS crash

    1.iOS瘦身之armv7 armv7s arm64选用 机器对指令集的支持是向下兼容的,因此armv7的指令集是可以运行在iphone5S以上的,只是效率没那么高而已~ 但是由于苹果要求必须支持ar ...

  5. xcode armv6 armv7 armv7s arm64

    眼下ios的指令集有下面几种: armv6 iPhone iPhone2 iPhone3G 第一代和第二代iPod Touch armv7 iPhone4 iPhone4S armv7s iPhone ...

  6. xcode armv7 armv7s arm64

    armv6 armv7 armv7s arm64引起编译包翻倍增大的问题,下边来说一下关于ios这个指令集 目前ios的指令集有以下几种: armv6 iPhone iPhone2 iPhone3G ...

  7. iOS——armv7,armv7s,arm64详解

    这2天升级到xcode6,用ios8 SDK编译老项目,各种Undefined symbols for architecture xxx,精神差点崩溃了.不过最后还是解决了,本文简单总结一下 简单来说 ...

  8. armv6, armv7, armv7s和i386

    出现这类问题一般与静态库有关. i386是代表模拟器,显示i386错误说明静态库不支持模拟器,只支持真机. armv6, armv7, armv7s是ARM CPU的不同指令集,原则上是向下兼容的.如 ...

  9. ZBar 支持i386 armv6 armv7 armv7s x86_64 arm64

    ZBar 支持i386 armv6 armv7 armv7s x86_64 arm64 mp3转码静态库libmp3lame.a,成功加入arm64支持后, 顺便把之前记录的二维码静态库libzbar ...

最新文章

  1. java值参_Java陷阱之慎用入参做返回值详解
  2. 机器学习入门方法推荐(少走弯路)入门视频推荐
  3. Toast的另类应用及另类“拦截”Home键
  4. 聊一聊社交网络的逻辑、产品和未来
  5. Visual Studio “Orcas” Beta 2 开始发布多语种版本 包含简体中文
  6. 真人出镜,微信视频号第一期视频来了!
  7. DataTable的Merge\COPY\AcceptChange使用说明
  8. Pytorch(2)-tensor常用操作
  9. python怎么实现音乐快进_Python 超简单3行代码提取音乐高潮(附批量提取)
  10. 有人问我,一个人创业需要什么技能?
  11. 上海世博会物联网技术应用
  12. 实验楼挑战:备份日志
  13. 红米手机使用应用沙盒一键修改cpu信息
  14. MySQL中CONCAT和GROUP_CONCAT方法的区别
  15. Oracle连接pg,pg连接oracle.sql
  16. 开源知识管理系统_逛了4年Github,一口气把我收藏的 Java 开源项目分享给你
  17. 给一个字符串数组,判断其是否是首尾相连的
  18. android popup
  19. Web全栈开发训练营
  20. 【Java基础】入门

热门文章

  1. Linux chmod命令
  2. Java List<T>去重方法,引用类型集合去重
  3. JDK下载地址、SecureCRT中JDK安装和环境配置、SecureCRT窗口编程、linux下命令运行小程序
  4. Threading in C#
  5. 正方形矩阵求对角线之和
  6. webrtc 源码结构
  7. jqGrid列的统计
  8. javascript获取事件源对象和产生事件的对象
  9. 如何随机选取1000个关键字
  10. 输入一个数,判断他是不是质数