IOS运行报错 "dyld: Library not loaded" 原因分析

我们的游戏IOS版在接入易接SDK后,启动出现如下错误

dyld: Library not loaded: @rpath/OnlineAHelper.framework/OnlineAHelper
  Referenced from: /var/mobile/Containers/Bundle/Application/35ED2A71-7F60-4A16-BA4C-ECD6493A1EE1/yzg.app/yzg
  Reason: no suitable image found.  Did find:
    /private/var/mobile/Containers/Bundle/Application/35ED2A71-7F60-4A16-BA4C-ECD6493A1EE1/yzg.app/Frameworks/OnlineAHelper.framework/OnlineAHelper: mmap() error 22 at address=0x0349E000, size=0x00014E70 segment=__LINKEDIT in Segment::map() mapping /private/var/mobile/Containers/Bundle/Application/35ED2A71-7F60-4A16-BA4C-ECD6493A1EE1/yzg.app/Frameworks/OnlineAHelper.framework/OnlineAHelper
    /private/var/mobile/Containers/Bundle/Application/35ED2A71-7F60-4A16-BA4C-ECD6493A1EE1/yzg.app/Frameworks/OnlineAHelper.framework/OnlineAHelper: mmap() error 22 at address=0x034C6000, size=0x00014E70 segment=__LINKEDIT in Segment::map() mapping /private/var/mobile/Containers/Bundle/Application/35ED2A71-7F60-4A16-BA4C-ECD6493A1EE1/yzg.app/Frameworks/OnlineAHelper.framework/OnlineAHelper

经过google后找到这个帖子  https://stackoverflow.com/questions/32730312/reason-no-suitable-image-found

里面给出了一些解决方法,包括清理缓存数据、重新安装证书等等。一开始我把这些方法几乎都尝试了一遍,但还是没有解决问题。

重新分析问题时,怀疑会不会是编译目标的CPU架构问题。我的测试机子是iPhone5s + iOS 9.2,编译目标架构选择了armv7

用file命令查看易接的库内容显示其包含了armv7和arm64两个版本。iPhone5s是arm64架构的CPU,于是重新编译选择了arm64,问题顺利解决。

错误原因:

32位的库在加载到64位的机子的iOS9系统后,32位的pagesize由之前的4096字节变成了16384字节,从而导致32位的APP加载的动态库不能在64位机子运行。

解决的方法有两种:

1.在动态库的工程中的other linker flags中加入

-Wl,-segalign,4000

2.将APP升级到支持arm64架构(这也是我们现在的做法)

相关链接:https://stackoverflow.com/questions/34707643/32-bit-app-with-dynamic-library-crash-on-64-bit-device

原文地址:https://www.cnblogs.com/doublerain/p/9272293.html

时间: 2024-08-02 09:32:37

IOS运行报错 "dyld: Library not loaded" 原因分析的相关文章

[iOS Xcode8报错]dyld: Library not loaded: /System/Library/Frameworks/UserNotifications.framework/UserN

[iOS Xcode8报错]dyld: Library not loaded: /System/Library/Frameworks/UserNotifications.framework/UserN 升级了Xcode8,但是我的真机是iOS7系统,在我解决了Xcode8不支持iOS7系统以后(http://blog.csdn.net/iOSTianNan/article/details/52619319),真机调试出现如下报错 dyld: Library not loaded: /System

Xcode 7 中 CocoaPods 编译报错 dyld: Library not loaded: @rpath/Pods.framework/Pods

问题症状与解决 在 Xcode 7 beta 3 (7A152u) 中创建 Swift 项目,并使用 CocoaPods 做依赖管理,编译时会遇到如下的报错: dyld: Library not loaded: @rpath/Pods.framework/Pods Referenced from: /private/var/mobile/Containers/Bundle/Application/26B91138-7483-40B0-9BE6-D27072472895/AppName.app/A

iOS运行报错:[AppName] was compiled with optimization....

刚升级了Xcode7之后,使用iOS9 SDK,启动app的时候一直报此错 [AppName] was compiled with optimization - stepping may behave oddly; variables may not be available. 手机上调试一启动就会出现上面那个错误,一启动就报错,然后就会闪退.([AppName]那里是我的应用的名字.) 解决方法: 把Architecture中的PlatForm指明为"IOS",而不是默认的"

iOS dyld: Library not loaded crash问题

今天在引入第三方framework时,我按照以前的方法,把framework加入到了下图的地方: 默认是required的,之后程序就crash了,报错dyld: Library not loaded,之后我把required 改成了optional,这次不crash了,但是运行时出错,库中的对象无法实例化,全部是空. 我是根据http://stackoverflow.com/questions/24333981/ios-app-with-framework-crashed-on-device-

iOS 报错 : dyld: Library not loaded: @rpath/

今天用阿里短视频点播短视频服务按照上边引导导入sdk后编译报错: dyld: Library not loaded: @rpath/ 整了半天 结果是目前iOS的短视频SDK输出的都是动态库,需要以动态库的方式添加. 需要在MyApp的工程中做如下配置

iOS 报错信息: dyld: Library not loaded: @rpath/XCTest.framework/XCTest Referenced from

新建项目,引入framework,运行时出现警告:dyld: Library not loaded: @rpath/RLLibrary.framework/RLLibrary Referenced from: /var/mobile/Applications/AE92B234-A818-445E-9D69-96E232BD50EB/RLProjectDemo.app/RLProjectDemo Reason: image not found 看网上不少人说是将 上图Link Binary Wit

Mac和Linux报错: dyld: Library not loaded: /usr/local/opt/jpeg/lib/libjpeg.8.dylib的解决办法

在mac系统下,执行谷歌机器学习框架 Tesseract时,报错: dyld: Library not loaded: /usr/local/opt/jpeg/lib/libjpeg.8.dylib 原因是在/usr/local/opt/jpeg/lib/路径下找不到 libjpeg.8.dylib文件. 解决方法: 以下命令按顺序在终端进行执行: 1:   wget -c http://www.ijg.org/files/jpegsrc.v8d.tar.gz2:   tar xzf jpegs

iOS开发运行报错、常见问题

一.报错与警报 1.错误代码:No architectures to compile for (ONLY_ACTIVE_ARCH=YES, active arch=x86_64, VALID_ARCHS=armv7 armv7s) build 这个target的时候命令行报错.可以在 build setting 中,搜索bitcode,并吧 enable bitcode 设置为 NO. 2.ld:framework not found IOKit 终端输入以下2行内容 1 2 3 cd/Appl

ios dyld: Library not loaded: @rpath/xxx.framework/xxx 之根本原因

碰到问题 dyld: Library not loaded: @rpath/xxx.framework/xxx Referenced from: /var/containers/Bundle/Application/0F41980D-5091-449D-AE29-5D018E3EB554/DemoOC.app/DemoOC Reason: image not found enable Always Embed Swift Standard Libraries option under Build