未能为特定内核版本构建Linux内核模块

时间:2018-06-18 19:10:27

标签: linux kernel-module

我正在尝试为Linux 4.15.0-23-generic构建一个LKM。我正在使用以下命令来制作它。

  

make -C / lib / modules / $(shell uname -r)/ build / M = $(PWD)modules

不幸的是,make无法获得正确的头文件。

  

警告:“unwind_get_return_address_ptr”[/home/probir/hyperf/hyperf/hyperf.ko]未定义!   警告:“__ kernel_text_address”[/home/probir/hyperf/hyperf/hyperf.ko]未定义!   make [1]:离开目录'/usr/src/linux-headers-4.15.0-23-generic'

头文件位于以下目录中。

  

/usr/src/linux-headers-4.15.0-23-generic/arch/x86/include/asm/unwind.h

     

/usr/src/linux-headers-4.15.0-23-generic/include/linux/kernel.h

为什么make无法找到标题,即使给出了正确的版本?

1 个答案:

答案 0 :(得分:1)

这些功能(unwind_get_return_address_ptr__kernel_text_address未导出(通过EXPORT_SYMBOL左右),因此模块无法使用它们< / em>的。只有编译到内核中的代码才可以使用给定的符号。