fedora linux – 编译第一个linux模块

在Fedora linux中编译我的第一个内核模块的时候出错。

源代码 : –

#include <linux/module.h> /* Needed by all modules */ #include <linux/kernel.h> /* Needed for KERN_INFO */ #include <linux/init.h> /* Needed for the macros */ static int __init hello_start(void) { printk(KERN_INFO "Loading hello module...\n"); printk(KERN_INFO "Hello world\n"); return 0; } static void __exit hello_end(void) { printk(KERN_INFO "Goodbye Mr.\n"); } module_init(hello_start); module_exit(hello_end); 

Makefile:—-

 obj-m = hello.o KVERSION = $(shell uname -r) all: make -C /lib/modules/$(KVERSION)/build M=$(PWD) modules clean: make -C /lib/modules/$(KVERSION)/build M=$(PWD) clean 

准时发生错误: –

 $ make make -C /lib/modules/3.8.6-203.fc18.x86_64/build M=/home/dinesh/development/linux/kernel_modules/hello modules make: *** /lib/modules/3.8.6-203.fc18.x86_64/build: No such file or directory. Stop. make: *** [default] Error 2 

现在,如果我看到构build是否存在,我得到以下o / p。 构build显示为一个软链接:—

 $ ls -l /lib/modules/3.8.6-203.fc18.x86_64/ total 2632 lrwxrwxrwx. 1 root root 38 Apr 15 21:32 build -> /usr/src/kernels/3.8.6-203.fc18.x86_64 drwxr-xr-x. 

即使安装后,我也得到同样的错误,kernel-devel: –

我的生成文件是正确的,它有规则之前正确的选项卡。 请build议如何解决这个错误?

正如guido所说的,你必须匹配你当前的内核和kernel-devel软件包。

让你的内核版本运行

 uname -r 

我得到3.6.10-4.fc18.x86_64,下载该kernel-devel版本

 sudo yum install kernel-devel-3.6.10-4.fc18 

或者更新你的系统并用新内核启动,我相信这两个会自动匹配。