首页 > 解决方案 > dyld:库未加载:@rpath/... 原因:代码签名时未找到图像

问题描述

我有一个包含 cli 工具和 dylib 的应用程序包。为了测试,我在终端(iTerm2)中调用 cli 工具:

DYLD_INSERT_LIBRARIES=./libwebsockets.14.dylib THNUCLNT_SVC="private" ./thnuclnt -v

dyld:库未加载:@rpath/libwebsockets.14.dylib 引用自:/Users/rwelz/Downloads/ezeep Connector.app/Contents/Resources/thnuclnt/thnuclnt/x86_64-darwin/./thnuclnt 原因:找不到图像中止陷阱:6

当我从 cli 工具中删除签名时,一切正常:

codesign --remove-signature thnuclnt

DYLD_INSERT_LIBRARIES=./libwebsockets.14.dylib THNUCLNT_SVC="private" ./thnuclnt -v

ThinPrint 客户端 Mac 版本 7.6.10.1,(c) 2007-2019 ThinPrint GmbH

从 libwebsockets.14.dylib 中删除签名完全没有效果。

我知道 cli 工具正在使用 dlopen 来加载 dylib。但是我没有 cli 工具的代码,也没有 libwebsockets.dylib 的代码,因为这些是由我的同事编写的。我只负责将所有内容放在应用程序包中。但是一切都建立在我们的构建服务器上——所以一切都使用相同的证书进行代码签名。

我希望我的 cli 工具能够加载 libwebsockets.dylib 并执行和输出,就像它没有签名一样。

应用代码设计时 cli 工具发生了什么变化?这里发生了什么?

非常感谢您的宝贵帮助

问候,

罗伯特

PS:

libwebsockets.14.dylib 和 tnuclnt 位于应用程序资源文件夹内的同一目录中:

~/Downloads/my_supersecret.app/Contents/Resources/thnuclnt/thnuclnt/x86_64-darwin/] $ ls -l

总计 3368

-rwxr-xr-x 1 rwelz 员工 268K Sep 25 11:35 libwebsockets.14.dylib

-rwxr-xr-x 1 rwelz 员工 321K Sep 25 11:35 thnuclnt

标签: macosdylibcodesign

解决方案


推荐阅读