我是TPM的新手。我想通过Esapi(esys)接口使用TPM生成随机字节。我正在尝试初始化Esys_Initialize()。下面是我的代码:
#include "/usr/include/tss2/tss2_esys.h"
int main(){
TSS2_RC rc;
size_t tcti_size;
TSS2_TCTI_CONTEXT *tcti_context = NULL;
TSS2_TCTI_CONTEXT *tcti_inner = NULL;
ESYS_CONTEXT *esys_context;
TSS2_ABI_VERSION abiVersion;
abiVersion.tssCreator=0x1;
rc=Esys_Initialize(&esys_context, tcti_context,&abiVersion);
return 0;
}错误消息为:
[root@Centos8_machine tpm]# gcc test.c
/tmp/ccUvOoY1.o: In function
`main': test.c:(.text+0x32): undefined reference to `Esys_Initialize'
collect2: error: ld returned 1 exit status有没有人能告诉我我失踪的地方?提前谢谢。
发布于 2020-08-07 00:30:03
“未定义的引用”错误表示您没有链接到提供缺失符号的库。在这种情况下,您需要链接到提供Esys_Initialize函数的库。
如果您正在手动编译,您可以使用:
$ gcc $(pkg-config --cflags --libs tss2-esys) test.c在本例中,我使用pkg-config --list-all | grep tss来查找这个包的名称。您还可以手动检查所需的编译器和链接器标志:
$ pkg-config --cflags --libs tss2-esys
-I/usr/include/tss -ltss2-esys如果您不是手动构建,但需要使用构建系统(例如make、cmake等)或者集成开发环境,那么您必须将这些编译器标志(-I/usr/include/tss)和链接器标志(-ltss2-esys)添加到您的构建系统中。具体步骤将取决于您使用的构建系统。
https://stackoverflow.com/questions/63279460
复制相似问题