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
,