坑爹的 ld: symbol(s) not found for architecture armv7

前两天好好的程序在Xcode 8 4s(8.4)真机的时候遇到上图错误,但是在5s、6s上都能正常运行,第一反应百度--然后根据百度经验:

如果真机调试就是 undefined symbols for architecture armv7错误!

发生这种错误通常是project.pbxproj这个文件引起的,尤其在多人合作开发的时候,svn提交不规范可能导致project.pbxproj发生错误,导致文件的引用不在project.pbxproj文件中。

xcode项目import文件会根据project.pbxproj来查找,查找不到文件的引用则会有上述的错误。

解决方法点击工程,在主界面中点击Build Phases,根据提示信息“XXX”来判断缺少什么文件,一般如果缺少自定义的文件,Complie Sources下没有XXX文件,那么就在Complie Sources中加入该文件。如果缺少类库,则在Link Binary With Libraries中加入该类库。

又或者是:

一般真机调试时,如果报armv7错误,一般都是因为armv7指令集是打开的,而之前一些引用库都是使用armv7之前的指令集编译的(当这些引用的外部库使用armv7指令集编译后,就不会出现该问题)

解决办法:

1. 去掉armv7指令集支持: xcode –> Build Settings –>valid Architectures  去掉armv7

2. 兼容armv7 : project –> Build Settings,把Build Active Architectures Only 的值设置为YES

呃,让我折腾的不亦乐乎,扣持了大半天还是一样的报错。最后无望的自己开始静下心来仔细看错误信息,发现都是与AF、MJ相关的第三方库类报错,那肯定是跟它俩跑不掉关系了。

通过报错路径搜索发现竟然有两个libAFNetworking.a与两个MJRefresh.a,好吧 .a静态库重复了。估计是之前cocoapods使用问题有关,删掉之后完美运行。所以在编程中遇到错误第一时间还是仔细阅读错误信息,其实已经基本上能锁定错误范围了。

时间: 2024-12-23 05:19:06

坑爹的 ld: symbol(s) not found for architecture armv7的相关文章

ld: symbol(s) not found for architecture armv7错误

将两个c函数从cpp文件中分离出来单独放入一个c文件中,报了下面的错: Undefined symbols for architecture armv7:  "MyEncrypt(unsigned char*, int, unsigned char*, int*, unsigned char*)", referenced from:      MainScene::init() in MainScene.o  "MyDecrypt(unsigned char*, int, u

ld: symbol(s) not found for architecture armv7

解决方案: Xcode直接clean应该是没有删掉项目索引之类的,我直接找到DerivedData,把里面所有文件夹都给清理了,再编译就好了PS:DerivedData影响:可重新生成:会删除build生成的项目索引.build输出以及日志.重新打开项目时会重新生成,大的项目会耗费一些时间. 路径:~/Library/Developer/Xcode/DerivedData 原文地址:https://www.cnblogs.com/foolish-guo/p/10898412.html

Undefined symbols for architecture i386:ld: symbol(s) not found for architecture i386

昨天项目还好好的,今天一编译竟然报错: Undefined symbols for architecture i386: "_KCCategorySentence", referenced from: ___58-[EvaSettingController tableView:didSelectRowAtIndexPath:]_block_invoke_2 in EvaSettingController.o -[XFParams setDefault] in XFParams.o __

iOS 编译含C++代码出现ld: symbol(s) not found for architecture i386错误之解决(转载)

最近项目需要搭建自己的IM服务器,在快速配置好Openfire之后,开始研究使用gloox开发XMPP客户端实现通信, 先下载gloox源码,然后./configure,make ,sudo make install,在/usr/local/下找到头文件夹和静态库,加到项目中,然后加入openssl库,编写测试代码,编译,报错:XXX not being for architecture i386,感觉是gloox静态库有问题(排除了网上说的头文件路径缺失.building phases没添加.

Nginx 安装 (mac os) 错误 ld: symbol(s) not found for architecture x86_64

今天在mac os 上编译安装Nginx时候,报错:ld: symbol(s) not found for architecture x86_64, 经过一番折腾之后发现,由于Nginx依赖openssl库,查看openssl的./config 文件发现,这个问题应该是 openssl/config脚本猜对你的系统是64位,但是 会根据$KERNEL_BITS来判断是否开启x86_64编译,默认不开启,他会给你5秒时间确认是否停止编译,手动设置x86_64编译,所以默认你生成的openssl库文

Showing Recent Messages ld: symbol(s) not found for architecture x86_64 可能出现的原因 模拟器运行的结果

---恢复内容开始--- 今天入职新公司,模拟器运行之前项目代码,各种崩溃,原因如下 最后问了各种人和网上各种资料查询,还是没有解决,最后只能找到几个月前项目负责人咨询,说是静态库不支持模拟器,只能真机运行, libprinter.SDK.a这个库不支持模拟器运行 ---恢复内容结束---

ld: symbol dyld_stub_binding_helper not found, normally in crt1.o/dylib1.o/bundle1.o for architectur

报错: symbol dyld_stub_binding_helper not found, normally in crt1.o/dylib1.o/bundle1.o for architecture i386 解决: Project -> Targets -> General -> Deployment Info -> Deployment Target ->选择7.0 参考: http://stackoverflow.com/questions/19157977/ld-

ios Symbol(s) not found for architecture arm64总结 含隐藏错误cocoapods

一.通用 报错:Desktop/project/ASDF/WEIXIN/libWeChatSDK.a (3 slices) Undefinedsymbols for architecture arm64: 这样的编译问题真的好头疼,以下是一个管用的法子. ARCHS = armv7 armv7s VALID_ARCHS = armv6 armv7 armv7s arm64 二.http://stackoverflow.com/questions/33321897/xcode-7-1-symbol

symbol(s) not found for architecture i386

此问题针对百度地图真机调试和模拟器.a文件的选取问题 "$(SRCROOT)/MobileYonyou/Third/BaiduMap_IOSSDK_v2.3.0_Lib/Release$(EFFECTIVE_PLATFORM_NAME)" 这样就可以根据运行环境自动选取.a文件. --     "$(SRCROOT)/MobileYonyou/Third/BaiduMap_IOSSDK_v2.3.0_Lib/Release$(EFFECTIVE_PLATFORM_NAME)&