我正在尝试编译一个示例c应用程序,该应用程序正在使用pkcs#11查找令牌上的所有私钥,并打印其标签和ID,但会出现以下错误
/tmp/ccAqQ7UI.o: In function initialize': pkcs11_example1.c:(.text+0x8e5): undefined reference to C_Initialize' /tmp/ccAqQ7UI.o: In function `get_slot':
这个例子来自这里
使用以下命令进行编译;
`gcc pkcs11_example1.c -o slots -L /usr/lib/opensc-pkcs11.so`
我不确定在-L之后我应该链接哪个库。 任何人都可以指导如何编译它,是否有一些库需要链接。
具有“C_”前缀的C_Initialize和其他60多个函数是PKCS#11规范中定义的cryptoki函数。 它们通常在HSM供应商提供的独立库中实现。 查看代码示例,我会说您需要直接链接PKCS#11库,或者您可以修改代码以在运行时使用LoadLibrary或dlopen动态加载PKCS#11库,然后通过C_GetFunctionList调用获取指向所有cryptoki函数的指针。 您还可以查看pkcs11-logger源代码 ,了解如何执行此操作的示例。
您提供的链接命令, gcc pkcs11_example1.c -o slots -L /usr/lib/opensc-pkcs11.so
,是错误的。
因此,首先确保您的库文件确实是/usr/lib/libopensc-pkcs11.so
(注意lib前缀!),可能跟随以下版本号。 然后更改构建选项,以便链接命令变为
gcc pkcs11_example1.c -o slots -lopensc-pkcs11
以上就是c/c++开发分享无法编译读取智能卡的ac应用程序相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/c-cdevelopment/519029.html