Undefined symbols for architecture arm64(其cpu架构)

"_OBJC_CLASS_$_XXX",referenced from: 之类的问题,很多人看到这些很头疼,不知道从何下手去修改。以下是我总结的相关修改办法。如下图

  

这是一个很明显的在arm64架构下,找不到定义的错误。  这类错误我总结的就六种,.m 缺失、静态库没导入(不支持arm64 架构,现在基本都支持了,如果不支持更新相关静态库。怎么查看参考文末)、library路径问题、header 文件路径、Valid Architectures 指定错误,连接器参数问题

 1.那么首先检查 Architectures 选项

  通常情况下,Build Active Architectures Only  在Debug 模式为YES,Release模式为NO。

        Valid Architectures  为 arm64 armv7 armv7s

  需要你了解的是  只有连接了Active 的调试设备,这个选项才生效,只编译当前设备对应的指令集。如果你没有连接设备,那么这里即使是YES,也不会生效。编译器会按照你的Valid Architectures和Architectures指定的二进制包进行编译。

具体参考

   armv6 设备: iPhone, iPhone2, iPhone3G, 第一代、第二代 iPod Touch

   armv7 设备: iPhone3GS, iPhone4, iPhone4S

                        iPad, iPad2, iPad3(The New iPad), iPad mini

                        iPod Touch 3G, iPod Touch4

  armv7s设备: iPhone5, iPhone5C, iPad4(iPad with Retina Display)

  arm64 设备: iPhone5S, iPad Air, iPad mini2(iPad mini with Retina Display)  之后出的到X都是arm64的设备了

    2. 向 Link Binary With Libraries 中 添加相应的framework   ,向Compile Source 添加你缺失的.m

3.修改 Other Linker Flags   添加 -ObjC 和 $(inherited),(也可以直接添加缺失的framework 如:  -framework "frameworkname" )

  4. Header Search Path 和Library  Search Path 先添加$(inherited),如果编译后,没有出现,就手拖缺失文件的相关路径(如果路径为多层级,选择递归搜索recursive 默认是non-recursive)

5.最后检查 framework 和.m 有没有 勾选 target membership 。

  

  总之,如果先思考是静态库问题,还是其他文件问题,会节约很多时间。以上总结,以留档备查,也希望可以给别人一些思路。

附:

查看.a或.framework 的静态库文件都支持哪些架构, 终端 进入工程根目录 find . -name *.a -exec lipo -info "{}" \  或者.framework

原文地址:https://www.cnblogs.com/DafaRan/p/8118205.html

时间: 2024-10-31 00:17:01

Undefined symbols for architecture arm64(其cpu架构)的相关文章

Undefined symbols for architecture arm64解决方案

在iOS开发中经常遇到的一个错误是Undefined symbols for architecture arm64,这个错误表示工程某些地方不支持arm64指令集.那我们应该怎么解决这个问题了?我们不仅要解决这个问题,更要了解出现这个问题的根源.这样根本上杜绝这类问题发生. 对于iOS设备来说iOS的指令集有armv6.armv7.armv7s.arm64这样四种,不同型号的iOS设备使用不同的指令集,下面是各自的区别: armv6 iPhone.iPhone 3G iPod 1G.iPod 2

ios Undefined symbols for architecture arm64

我追加了 一个之前写的 关于加载的 .h.m文件 但是在我新追加其他工程里面 突然报错: Undefined symbols for architecture arm64: "_OBJC_CLASS_$_MBProgressHUD", referenced from: objc-class-ref in loginController.old: symbol(s) not found for architecture arm64clang: error: linker command

iOS Undefined symbols for architecture arm64解决办法

Undefined symbols for architecture arm64:  "_OBJC_CLASS_$_YYCache", referenced from:      objc-class-ref in LFNetworking.o  "_OBJC_CLASS_$_AFHTTPRequestSerializer", referenced from:      objc-class-ref in LFNetworking.o  "_OBJC_CL

真机提示Undefined symbols for architecture arm64

iOS程序模拟器手机运行都正常,archiving出错:Undefined symbols for architecture arm64 今天发现写好的程序可以在模拟器上运行也可以在手机上运行,但为什么Archive的时候出错了,出错信息如下: 意思是说 有几个类不支持arm64指令 出现Undefined symbols for architecture arm64错误,解决方法如下: 查看引入的微信包,发现 lipo -info libWeChatSDK.a文件后发现 仅支持armv7 ar

更新cocoapods之后,出现Undefined symbols for architecture arm64

最近刚更新了cocoapods之后出现了 Undefined symbols for architecture arm64: ld: symbol(s) not found for architecture arm64 所有的第三方库都不支持 arm64. 由于之前的三方类库编译文件已存在,导致更新的类库无法编译!!!(查找了很多方法都无效,最终还是这个原因!) 只需要在libPods-xxxx.a点Show in Finder,将Products目录下文件全部清空,重新编译就好了.

Undefined symbols for architecture arm64:问题

Undefined symbols for architecture arm64: "_sqlite3_prepare_v2", referenced from: +[HMJSchoolTool queryWithCondition:] in HMJSchoolTool.o "_sqlite3_step", referenced from: +[HMJSchoolTool queryWithCondition:] in HMJSchoolTool.o "_

Undefined symbols for architecture arm64:

"_OBJC_CLASS_$_UIResponder", referenced from: _OBJC_CLASS_$_AppDelegate in AppDelegate.o "_OBJC_METACLASS_$_UIResponder", referenced from: _OBJC_METACLASS_$_AppDelegate in AppDelegate.o "_UIApplicationMain", referenced from:

ios开发遇到如下错误:Undefined symbols for architecture arm64,我的解决方案

博客处女作,写得不好望谅解! “for architecture arm64”就是说没有支持arm64,在Build settings里architecture相关的几项需要配置正确 在最近升级cocoapod工具管理中,由于我们的工程版本号已经升级到了2.1了,所以升级过程中遇见了很多问题,折腾了好几天.这个问题便是其中一个.下面说说我们的解决方案 升级过后编译报 ld: can't link with a main executable file '/Users/WayneLiu_Mac/L

iOS开发遇到的坑之一: 开发遇见如下错误:Undefined symbols for architecture arm64

博客处女作,写得不好望谅解! “for architecture arm64”就是说没有支持arm64,在Build settings里architecture相关的几项需要配置正确 在最近升级cocoapod工具管理中,由于我们的工程版本号已经升级到了2.1了,所以升级过程中遇见了很多问题,折腾了好几天.这个问题便是其中一个.下面说说我们的解决方案 升级过后编译报 ld: can't link with a main executable file '/Users/WayneLiu_Mac/L