fedora linux ---编译第一个linux模块

Kat*_*och 5 linux fedora linux-device-driver embedded-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);
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

制作时错误: -

$ 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
Run Code Online (Sandbox Code Playgroud)

现在,如果我看到构建是否存在,我会跟随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. 
Run Code Online (Sandbox Code Playgroud)

在安装kernel-devel之后我也遇到了同样的错误: -

我的makefile是正确的,它在规则之前有正确的标签.请提出如何解决此错误?

Hoh*_*erg 3

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

让您的内核版本运行

uname -r
Run Code Online (Sandbox Code Playgroud)

我得到 3.6.10-4.fc18.x86_64,下载该内核开发版本

sudo yum install kernel-devel-3.6.10-4.fc18
Run Code Online (Sandbox Code Playgroud)

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