
1、缺少Linux kernel头文件
To install just the headers in Ubuntu:
sudo apt-get install linux-headers-$(uname -r) |
To install the entire Linux kernel source in Ubuntu:
sudo apt-get install linux-source |
Note that you should use the kernel headers that match the kernel you are running.
2、内核模块编译过程ubuntu
源码 hello.c :
#include <linux/init.h>
#include <linux/module.h> MODULE_LICENSE("Dual BSD/GPL"); static int hello_init(void)
{
printk(KERN_ALERT "Hello, world\n");
return 0;
} static void hello_exit(void)
{
printk(KERN_ALERT "Goodbye, cruel world\n");
} module_init(hello_init);
module_exit(hello_exit);
Makefile文件
# at first type on ur terminal that $(uname -r) then u will get the version..
# that is using on ur system obj-m += hello.o KDIR =/usr/src/linux-headers-$(shell uname -r) all:
$(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules clean:
rm -rf *.o *.ko *.mod.* *.symvers *.order
内核模块运行:
$ sudo insmod hello.ko
$ dmesg ==> u will get the output
$ sudo rmmod hello
$ dmesg
参考链接:http://*.com/questions/16919512/linux-module-h-no-such-file-or-directory