可信平台模块 (TPM) TSS 程序编译错误
Trusted Platform Module (TPM) TSS program compilation error
我是 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
谁能告诉我哪里不见了?
提前致谢。
“未定义引用”错误意味着您没有 link反对提供缺失符号的库。在这种情况下,您需要 link 针对提供 Esys_Initialize
功能的库。
如果您手动编译,您可以使用:
$ gcc $(pkg-config --cflags --libs tss2-esys) test.c
在这种情况下,我使用 pkg-config --list-all | grep tss
来查找此包的名称。您还可以手动检查所需的编译器和 linker 标志:
$ pkg-config --cflags --libs tss2-esys
-I/usr/include/tss -ltss2-esys
如果您不是手动构建而是需要使用构建系统(例如 make、cmake 等)或 IDE,那么您必须添加这些编译器标志(-I/usr/include/tss
) 和 linker 标志 (-ltss2-esys
) 到您的构建系统。具体步骤取决于您使用的构建系统。
我是 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
谁能告诉我哪里不见了? 提前致谢。
“未定义引用”错误意味着您没有 link反对提供缺失符号的库。在这种情况下,您需要 link 针对提供 Esys_Initialize
功能的库。
如果您手动编译,您可以使用:
$ gcc $(pkg-config --cflags --libs tss2-esys) test.c
在这种情况下,我使用 pkg-config --list-all | grep tss
来查找此包的名称。您还可以手动检查所需的编译器和 linker 标志:
$ pkg-config --cflags --libs tss2-esys
-I/usr/include/tss -ltss2-esys
如果您不是手动构建而是需要使用构建系统(例如 make、cmake 等)或 IDE,那么您必须添加这些编译器标志(-I/usr/include/tss
) 和 linker 标志 (-ltss2-esys
) 到您的构建系统。具体步骤取决于您使用的构建系统。