Mac OS中测试App出现libcrypto1.0.0.dylib 无法找到的错误 “Image Not Found“ “Code 1 Library missing“

最近在升级App时,本地测试没有问题,在其他机器上测试时,出现了,"libcrypto.1.0.0.dylib"  Image Not Found, "Library missing"的问题。

XCode出现“Image Not Found”的错误,可能有以下几个原因:

1. libcrpto.1.0.0.dylib,文件没有copy到程序包里面。需要检查程序包里是否有改文件

2. libcrpto.1.0.0.dylib , 文件的调用路径不正确。

3. libcrpto.1.0.0.dylib , 的install name是绝对路径,而不是@rpath, @executable_path等相对路径。

经过排查,只可能是原因3, 需要用到 install_name_tool 来修改libcrypto.1.0.0.dylib的install_name

1. 什么是install name?

每一个dylib都有一个install_name , 可以用 otool -L 来查看dylib的install name, 如下图红框部分所示,整个路径就是libcrypto.1.0.0.dylib的install name

因为此处是绝对路径,所以程序在另一台电脑运行时,就会出现找不到的错误

2. install_name_tool命令修改install name

install_name_tool -id 命令用于修改动态库的安装名称(install name)‌。

该命令的基本语法如下:

install_name_tool -id new_path path_of_dylib

其中,new_path 是新的安装名称,path_of_dylib 是要修改的dylib文件(绝对路径,相对路径均可以)

修改libcrypto.1.0.0.dylib的install name命令如下:

install_name_tool -id @rpath/libcrypto.1.0.0.dylib  ./libcrypto.1.0.0.dylib

如果出现如下错误,

error: install_name_tool: can't open input file: ./libcrypto.1.0.0.dylib for writing (Permission denied)
error: install_name_tool: can't lseek to offset: 0 in file: ./libcrypto.1.0.0.dylib for writing (Bad file descriptor)
error: install_name_tool: can't write new headers in file: ./libcrypto.1.0.0.dylib (Bad file descriptor)
error: install_name_tool: can't close written on input file: ./libcrypto.1.0.0.dylib (Bad file descriptor)

就使用如下命令:

sudo install_name_tool -id @rpath/libcrypto.1.0.0.dylib  ./libcrypto.1.0.0.dylib

3. @rpath , @executable_path的区别

后续再补充

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

青瓷代码世界

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值