dlopen() не может загрузить opensc-pkcs11.so

Пытаясь извлечь /usr/lib/x86_64-gnu-linux/opensc-pkcs11.so из приложения, я получаю "Невозможно открыть общий объектный файл: нет такого файла или каталога" для библиотеки.

dlopen("/usr/lib/x86_64-linux-gnu/opensc-pkcs11.so", RTLD_NOW | RTLD_LOCAL);

Я следовал инструкциям в вики https://github.com/OpenSC/OpenSC/wiki/Compiling-and-Installing-on-Unix-flavors

а также сделал sudo apt-get install opensc-pkcs11.so. Файл существует в / usr / lib / x86_64-gnu-linux, и это путь поиска библиотеки.

Есть ли что-нибудь еще, что нужно сделать? Нужно ли устанавливать какие-либо переменные env? То же самое работает для dlopen библиотеки SoftHSM.

Хотел бы отметить, что при запуске командной строки pkcs11-tool он работает

$ pkcs11-tool --module /usr/lib/x86_64-linux-gnu/opensc-pkcs11.so -I
Cryptoki version 2.20
Manufacturer     OpenSC (www.opensc-project.org)
Library          Smart card PKCS#11 API (ver 0.0)
No slot with a token was found.

Так что, кажется, когда я пытаюсь использовать тот же самый дуплен в моем приложении, он терпит неудачу. Есть идеи?

1 ответ

Решение

когда я пытаюсь использовать один и тот же dlopen в приложении,

Наиболее вероятная причина no such file это то, что opensc-pkcs11.so сам по себе имеет зависимость от какой-то другой библиотеки, и эта библиотека не найдена.

Вы можете подтвердить или опровергнуть это с помощью ldd /usr/lib/x86_64-linux-gnu/opensc-pkcs11.so,

Другие вопросы по тегам