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

dlopen() fails loading opensc-pkcs11.so

在尝试从应用程序中打开 /usr/lib/x86_64-gnu-linux/opensc-pkcs11.so 时,我得到了库的 "Cannot open shared object file: no such file or directory"。

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 中,这是库搜索路径。

还有什么需要做的吗?是否需要设置任何环境变量?这同样适用于 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 时,它似乎失败了。有什么想法吗?

when I try the same dlopen within my application, that it fails

no such file 最可能的原因是 opensc-pkcs11.so 本身 依赖于其他一些库,并且 找不到库。

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