Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 编译内核模块源代码时如何包含标准头文件?_C_Linux_Makefile_Kernel Module - Fatal编程技术网

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

C 编译内核模块源代码时如何包含标准头文件?,c,linux,makefile,kernel-module,C,Linux,Makefile,Kernel Module,我已经在我的机器上下载、编译并安装了最新的内核。现在,我正在尝试编写一个内核模块。当我尝试编译它时,会出现以下类似类型的错误- 致命错误:sys/syscall.h:没有这样的文件或目录 致命错误:linux/module.h:没有这样的文件或目录 我已经尝试过为此重写makefile,方法是从我最新内核的源代码中包含必要的目录,但问题仍然存在 需要你的建议。你的Makefile应该是这样的 hello.ko: hello.c make ARCH=um -C "/home/abhijit/p

我已经在我的机器上下载、编译并安装了最新的内核。现在,我正在尝试编写一个内核模块。当我尝试编译它时,会出现以下类似类型的错误- 致命错误:sys/syscall.h:没有这样的文件或目录 致命错误:linux/module.h:没有这样的文件或目录 我已经尝试过为此重写makefile,方法是从我最新内核的源代码中包含必要的目录,但问题仍然存在


需要你的建议。

你的
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\u init
module\u exit

你有这些东西吗?

你不能在内核中使用libc头

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


不过,include for linux/module.h应该可以工作。您能给我们您正在使用的Makefile吗?

给我们看看代码。此外,您不应该在模块中包含标准头文件。您是否阅读过内核模块教程?现代内核为模块提供了一个完整的构建环境,您应该使用它。(换句话说:在询问问题之前向我们展示你得到了什么。)对你有用吗?你能给我们展示一下makefile吗?我的Make文件看起来像这样-[code]obj-m+=file.o all:Make-C/lib/modules/$(shell uname-r)/build m=$(PWD)modules clean:Make-C/lib/modules/$(shell uname-r)/build m=$(PWD)很好,在一个内核模块教程中,有人建议我包含这些头文件。我是这个领域的新手,因此使用了任何建议。我的Make文件看起来像这样-obj-m+=file.o all:Make-C/lib/modules/$(shell uname-r)/build m=$(PWD)modules clean:Make-C/lib/modules/$(shell uname-r)/build m=$(PWD)clean在一个内核模块教程中,有人建议我包括这些头文件。我是这个领域的新手,因此使用了所有建议。