2013-06-04 59 views
5

在編譯Fedora linux中的第一個內核模塊時出錯。fedora linux ---編譯第一個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 

現在,如果我看到的構建是有或不,我得到以下o/p。建立顯示爲一個符號鏈接:---

$ 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. 

I got same error even after installing, kernel-devel :--

我的makefile文件是正確之規則之前有正確的選項卡。請建議如何解決此錯誤?

+0

是否存在'/ usr/src/kernels/3.8.6-203.fc18.x86_64'? –

+0

只有這兩個文件夾存在----> /usr/src/kernels/3.8.7-201.fc18.x86_64 ---&--- /usr/src/kernels/3.9.4-200.fc18.x86_64 ---->軟鏈接不存在 – Katoch

+0

現在該怎麼辦? – Katoch

回答

3

正如guido所說的,您必須匹配您當前的內核和kernel-devel軟件包。

爲了讓您的內核版本上運行

uname -r 

我得到3.6.10-4.fc18.x86_64,下載安裝kernel-devel版本

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

或更新系統和引導與新的內核,我相信這兩個會自動匹配。