【发布时间】:2013-01-14 06:40:54
【问题描述】:
我是内核模块开发的新手。所以我从简单的 hello world 内核模块开始 我正在使用“The Linux Kernel Module Programming Guide”一书作为参考(它针对内核 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 包含实际模块(不是符号链接)。 应该是什么问题?为什么会有这样的差异?
【问题讨论】:
-
我也在使用具有相同符号链接的 fedora 17/18,我没有任何问题。它是一个有效的符号链接吗? /usr/src/kernels/3.3.4-5.fc17.x86_64 存在吗?
标签: linux-kernel makefile kernel-module