首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >受信任的平台模块(TPM) TSS程序编译错误

受信任的平台模块(TPM) TSS程序编译错误
EN

Stack Overflow用户
提问于 2020-08-06 16:16:06
回答 1查看 176关注 0票数 1

我是TPM的新手。我想通过Esapi(esys)接口使用TPM生成随机字节。我正在尝试初始化Esys_Initialize()。下面是我的代码:

代码语言:javascript
复制
#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;
}

错误消息为:

代码语言:javascript
复制
[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

有没有人能告诉我我失踪的地方?提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-07 00:30:03

“未定义的引用”错误表示您没有链接到提供缺失符号的库。在这种情况下,您需要链接到提供Esys_Initialize函数的库。

如果您正在手动编译,您可以使用:

代码语言:javascript
复制
$ gcc $(pkg-config --cflags --libs tss2-esys) test.c

在本例中,我使用pkg-config --list-all | grep tss来查找这个包的名称。您还可以手动检查所需的编译器和链接器标志:

代码语言:javascript
复制
$ pkg-config --cflags --libs tss2-esys
-I/usr/include/tss -ltss2-esys

如果您不是手动构建,但需要使用构建系统(例如make、cmake等)或者集成开发环境,那么您必须将这些编译器标志(-I/usr/include/tss)和链接器标志(-ltss2-esys)添加到您的构建系统中。具体步骤将取决于您使用的构建系统。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63279460

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档