dyld: библиотека не загружена: @ rpath /… причина: изображение не найдено при подписании кода - PullRequest
0 голосов
/ 25 сентября 2019

У меня есть пакет приложений, содержащий инструмент cli и dylib.Для тестирования я вызываю инструмент cli в Терминале (iTerm2):

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, все работает нормально:

codeign --remove-signature thnuclnt

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

ThinPrint Client 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 штатный состав 268K, 25 сентября 11:35 libwebsockets.14.dylib

-rwxr-xr-x 1 составный состав: 321K, 25 сентября. 11:35 thnuclnt

...