调用Tss2_TctiLdr_Initialize报undefined reference错误如何解决?
问题原因
你遇到的undefined reference to Tss2_TctiLdr_Initialize报错是因为缺失对应的链接库:Tss2_TctiLdr_Initialize属于TSS2的TCTI加载器模块,对应的动态库为libtss2-tctildr.so,你当前Makefile的TPMFLAGS参数中没有链接该库。
解决方案
修改Makefile中的TPMFLAGS配置行,追加-ltss2-tctildr链接参数即可:
# 修改前 TPMFLAGS =-L=/usr/local/lib/ -ltss2-esys -ltss2-tcti-device # 修改后 TPMFLAGS =-L/usr/local/lib/ -ltss2-esys -ltss2-tcti-device -ltss2-tctildr
注:-L=后的等号可直接删除,不影响编译逻辑。
异常排查
如果修改后仍报错,可以按以下步骤检查:
- 执行
ls /usr/local/lib/libtss2-tctildr*确认对应库文件存在,若不存在需要重新编译安装完整的tpm2-tss套件 - 确认链接参数顺序正确:上层依赖库(如esys)放在前面,底层依赖库(如tcti系列库)放在后面
内容的提问来源于stack exchange,提问作者Huzaifa Hashim
相关产品推荐
相关产品推荐

