【问题标题】:Trusted Platform Module (TPM) TSS program compilation error可信平台模块 (TPM) TSS 程序编译错误
【发布时间】:2020-08-06 08:16:06
【问题描述】:

我是 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

有人能告诉我我在哪里失踪吗? 提前致谢。

【问题讨论】:

    标签: c cryptography tpm


    【解决方案1】:

    “未定义引用”错误意味着您没有链接到提供缺失符号的库。在这种情况下,您需要链接到提供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、...)或 IDE,则必须添加那些编译器标志 (-I/usr/include/tss) 和链接器标志 (@ 987654326@) 到您的构建系统。具体步骤取决于您使用的构建系统。

    【讨论】:

    • 感谢我现在可以构建
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-29
    • 2017-10-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-19
    • 1970-01-01
    相关资源
    最近更新 更多