如何在编译内核模块源时包含标准头文件?

时间:2011-06-21 09:28:14

标签: c linux makefile kernel-module

我已经在我的机器上下载,编译和安装了最新的内核。现在,我正在尝试编写内核模块。当我尝试编译它时,我得到类似的错误 -     致命错误:sys / syscall.h:没有这样的文件或目录     致命错误:linux / module.h:没有这样的文件或目录 我尝试以包含来自我最新内核源的必要目录的方式重写makefile,但问题仍然存在。

需要你的建议。

2 个答案:

答案 0 :(得分:1)

您不能在内核中使用libc头。

此外,您似乎包含syscall.h。 Syscalls本质上是用户空间调用。内核中不需要系统调用。

linux / module.h的include应该可行。你能给我们你正在使用的Makefile吗?

答案 1 :(得分:0)

您的Makefile看起来应该是这样的。

hello.ko: hello.c
  make ARCH=um -C "/home/abhijit/play/kernel/linux-2.6" M=`pwd` modules

obj-m:= hello.o
objs:= hello.o

您应该在源文件中定义module_initmodule_exit。 你有这些东西吗?