编译tpm驱动程序会使tpm_open()未定义

时间:2016-11-08 03:20:57

标签: c linux linux-device-driver tpm

我正在尝试在Linux中注册TPM驱动程序。在编译时,我能够获得.ko输出文件,但得到下面列出的错误。在我看来,这与我的机器上的linux标头有关,可能缺少这些功能的定义。我将linux头文件和内核升级到最新版本但仍然遇到问题。

由于无法识别这些功能,因此modprobe失败并出现相同的错误(这些功能上的未知符号为err0)。

构建模块,第2阶段。 使用KERNELRELEASE构建= 4.4.0-45-generic   MODPOST 2模块 警告:“tpm_open”[/home/burwani/Desktop/tpm_act2_driver_poc/tpm_act2_driver/tpm_act2.ko]未定义! 警告:“tpm_read”[/home/burwani/Desktop/tpm_act2_driver_poc/tpm_act2_driver/tpm_act2.ko]未定义! 警告:“tpm_remove_hardware”[/home/burwani/Desktop/tpm_act2_driver_poc/tpm_act2_driver/tpm_act2.ko]未定义! 警告:“tpm_release”[/home/burwani/Desktop/tpm_act2_driver_poc/tpm_act2_driver/tpm_act2.ko]未定义! 警告:“tpm_show_pubek”[/home/burwani/Desktop/tpm_act2_driver_poc/tpm_act2_driver/tpm_act2.ko]未定义! 警告:“tpm_show_caps”[/home/burwani/Desktop/tpm_act2_driver_poc/tpm_act2_driver/tpm_act2.ko]未定义! 警告:“tpm_write”[/home/burwani/Desktop/tpm_act2_driver_poc/tpm_act2_driver/tpm_act2.ko]未定义! 警告:“tpm_register_hardware”[/home/burwani/Desktop/tpm_act2_driver_poc/tpm_act2_driver/tpm_act2.ko]未定义! 警告:“tpm_store_cancel”[/home/burwani/Desktop/tpm_act2_driver_poc/tpm_act2_driver/tpm_act2.ko]未定义! 警告:“tpm_show_pcrs”[/home/burwani/Desktop/tpm_act2_driver_poc/tpm_act2_driver/tpm_act2.ko]未定义!

1 个答案:

答案 0 :(得分:0)

您正在构建针对内核4.4.0-45-generic。在我看来,方法就像 tpm_open()和tpm_read()仅在比4.4更旧的内核中的头文件中声明,并且是最后一个内核 在tpm.h头文件中声明它们是3.9: http://lxr.free-electrons.com/source/drivers/char/tpm/tpm.h?v=3.9

你是否可以将代码基于内核模块,该内核模块是针对版本为< = 3.9的内核构建的?

在内核4.4中,您将无法在tpm.h头文件中找到这些方法。

tpm_open()被定义为内核4.4中的静态方法。

我相信当你尝试modprobe你的模块时,你看到的其他方法也是“未定义的”被定义为静态。