我是内核模块开发的新手。所以我从简单的 hello world 内核模块开始,我使用“Linux 内核模块编程指南”一书作为参考(它针对内核 2.6)。我用 yum 安装了 kernel-devel 和 kenel 头文件。我正在使用 Fedora 17。我发现一个符号链接
/lib/modules/3.3.4-5.fc17.x86_64/build -> /usr/src/kernels/3.3.4-5.fc17.x86_64
现在,我有一个 hello-1.c(简单的内核模块和我的工作目录中的 Makefile)Makefile 是:
obj-m += hello-1.o
all:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
clean:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean
在 $make 中时出现错误:
make -C /lib/modules/3.3.4-5.fc17.x86_64/build M=/root/kerneldev modules
make: *** /lib/modules/3.3.4-5.fc17.x86_64/build: No such file or directory. Stop.
make: *** [all] Error 2
我在 Centos-5.x 上成功运行相同的程序,因为 /lib/modules/3.3.4-5.fc17.x86_64/build 包含实际模块(不是符号链接)。应该是什么问题?为什么会有这样的差异?