我写了一个简单的模块:
#define __KERNEL__
#define MODULE
#include <linux/kernel.h>
#include <linux/module.h>
int init_module(void)
{
printk("Hello, world\n");
return 0;
}
void cleanup_module(void)
{
printk("Goodbye\n");
}
并使用以下命令编译它:
cc -c hello.c
但我收到此错误:
linux/module.h: No such file or directory
有什么建议么?
编辑:
我使用这个命令:
cc -I/usr/src/linux-headers-3.0.0-17-generic/include -c hello.c
它向前迈出了一步,现在我收到此错误:
In file included from /usr/src/linux-headers-3.0.0-17-generic/include/linux/kernel.h:13:0,
from hello.c:3:
/usr/src/linux-headers-3.0.0-17-generic/include/linux/linkage.h:5:25: fatal error: asm/linkage.h: No such file or directory
compilation terminated.
首先你需要内核源代码 http://www.kernel.org/。许多人会混淆用户空间标头和内核空间标头,因为它们中的许多标头具有相同的文件夹结构。大多数发行版只有用户空间标头,没有内核空间标头。
And 一般来说 make
用于构建内核模块而不是裸露的cc
。按照简单的步骤说明进行操作Hello World
给出的内核模块here http://tldp.org/LDP/lkmpg/2.6/html/lkmpg.html
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)