0

在尝试从应用程序中 dlopen /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 中,这是库搜索路径。

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

4

1 回答 1

3

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

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

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

于 2018-01-09T03:47:28.433 回答