我是一名新手内核模块开发者。因此,我从简单的hello world内核模块开始学起。我参考了《Linux内核模块编程指南》这本书(它是针对内核2.6的)。
我使用yum安装了kernel-devel和kernel headers。我正在使用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包含了实际的模块(而不是符号链接)。为什么会出现这样的差异?有什么问题吗?