3

我是内核模块开发的新手。所以我从简单的 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 包含实际模块(不是符号链接)。应该是什么问题?为什么会有这样的差异?

4

3 回答 3

0

尝试“yum install kernel-devel”(用于内核头文件)

于 2013-07-16T09:50:07.107 回答
0

我几乎没有疑问,例如您在哪里发出 make 命令。您当前的目录似乎是

M=/root/kerneldev

您的 hello-1.c 是否在/root/kerneldev文件夹中。

于 2013-01-30T19:25:40.490 回答
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'对他们没有帮助的人。

于 2020-02-20T18:46:42.973 回答