macos - 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
解决方案
推荐阅读
- kubernetes - 入口控制器 nginx kubernetes 不工作
- phpmailer - 使用 PHPmailer 的电子邮件验证链接
- html - 带有 div 和 input 的元素的宽度
- google-cloud-firestore - FieldValue.increment 不是函数
- powershell - EPPlus 依赖循环
- oracle - 替换oracle中的字符(&)
- c - 安排代码以分离 C 中的函数
- ruby-on-rails - 添加对现有活动记录的引用并添加belongs_to,破坏代码
- git - git push 未在 github 上显示,仍然出现 lfs 错误
- c++ - 如何在 Visual Studio 2017 中为 Windows XP 编译代码