我正在尝试编写一个非常基本的“Hello World”设备驱动程序示例,该示例在任何设备驱动程序实现入门类(class)中都有讲授。我的 makefile 如下:
obj-m := hello.o
KDIR := /lib/modules/$(shell uname -r)/bulid
PWD := $(shell pwd)
all:
make -C $(KDIR) M=$(PWD) modules
当我使用 make 命令时,它显示/lib/modules/version_no/build/不存在。所以我进入目录/lib/modules/version_no 并发现有一个目录 build 但是如果我使用 ls 命令,它会以红色打印,这意味着该目录已被弃用。它包含一个指向 ../../../usr/src/version_no 的链接,但令我惊讶的是,该链接中的版本号与/usr/src/中实际文件夹的名称不同。谁能指出问题是什么?我使用的是 centos 6.1。
最佳答案
这是因为您还没有下载特定内核版本的 linux 头文件。
假设您的内核版本是 4.15.0-32-generic
,使用 sudo apt install linux-headers-4.15.0-32-generic
安装所需的头文件
在你的情况下,你可以通过
yum install kernel-devel kernel-headers
关于linux -/lib/modules/<version>/build/不存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54215054/