dlopen()无法加载opensc-pkcs11.so

时间:2018-01-09 00:27:47

标签: dlopen pkcs#11 opensc

在尝试从应用程序中删除/usr/lib/x86_64-gnu-linux/opensc-pkcs11.so时,我得到了一个“无法打开共享对象文件:没有这样的文件或目录”。

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

我按照Wiki上的说明操作 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变量?这同样适用于SoftHSM库的dlopen。

想要指出在运行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.

所以当我在我的应用程序中尝试相同的dlopen时,它似乎失败了。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

  

当我在我的应用程序中尝试相同的dlopen时,它失败了

no such file的最可能原因是opensc-pkcs11.so 本身依赖于其他某些库, 库不是&#39找到了。

您可以使用ldd /usr/lib/x86_64-linux-gnu/opensc-pkcs11.so确认或反驳这一点。