我试图在Linux中注册一个TPM驱动程序。在编译过程中,我能够获得.ko输出文件,但得到了下面列出的错误。在我看来,这与我的机器上的linux头有关,它可能遗漏了这些函数的定义。我将linux头和内核升级到最新版本,但仍然存在问题。
由于这些函数没有被识别,所以mod探头也会出现同样的错误(这些函数上的未知符号err0 )。
构建模块,第2阶段。用KERNELRELEASE =4.4.0-45构建-通用MODPOST 2模块警告:"tpm_open“tpm_open未定义!警告:"tpm_read“tpm_read未定义!警告:"tpm_remove_hardware“tpm_remove_hardware未定义!警告:"tpm_release“tpm_release未定义!警告:"tpm_show_pubek“tpm_show_pubek未定义!警告:"tpm_show_caps“tpm_show_caps未定义!警告:"tpm_write“tpm_write未定义!警告:"tpm_register_hardware“tpm_register_hardware未定义!警告:"tpm_store_cancel“tpm_store_cancel未定义!警告:"tpm_show_pcrs“tpm_show_pcrs未定义!
发布于 2016-11-10 15:01:07
您正在构建的是内核4.4.0-45-泛型。在我看来,像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中的一个静态方法。
我相信,当您试图对模块进行调制解调器探测时,您认为“未定义”的其他方法也被定义为静态的。
https://stackoverflow.com/questions/40478387
复制