我是内核模块开发的新手。所以我开始使用简单的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包含实际模块(不是符号链接)。 应该有什么问题?为何如此差异?
答案 0 :(得分:0)
我很少怀疑你发出make命令的地方。 您当前的目录似乎是
M=/root/kerneldev
你的hello-1.c是否在/root/kerneldev
文件夹中。
答案 1 :(得分:0)
尝试“yum install kernel-devel”(对于内核头文件)
答案 2 :(得分:0)
消息
make: *** /lib/modules/3.3.4-5.fc17.x86_64/build: No such file or directory. Stop.
告诉您***之后的目录路径不存在。当Make
目录不存在时,-C
会发出这种确切的错误格式。其他不存在的路径情况将导致更多的单词。例如,如果确实存在/lib/modules/3.3.4-5.fc17.x86_64/build
目录,但其中不包含任何makefile,则make
会具体说出no makefile found
。
因此,其他答案也为您提供了一些帮助,以帮助您创建具有适当内容的目录。
此答案还旨在通过解释该消息本身来帮助具有上述形式错误消息并且对于安装'kernel-devel'没有帮助的人。