У меня есть пакет приложений, содержащий инструмент 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