我正在尝试为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无法找到标题,即使给出了正确的版本?
答案 0 :(得分:1)
这些功能(unwind_get_return_address_ptr和__kernel_text_address)未导出(通过EXPORT_SYMBOL
左右),因此模块无法使用它们< / em>的。只有编译到内核中的代码才可以使用给定的符号。