/lib/modules/<version>/构建/不存在

/lib/modules/<version>/build/ not existent

我正在尝试编写一个非常基本的 "Hello World" 设备驱动程序示例,该示例在任何设备驱动程序实现入门课程中都有讲授。我的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 命令,它会以红色打印,这意味着该目录已被弃用。它包含一个 link 到 ../../../usr/src/version_no,但令我惊讶的是,link 中的版本号和 [=21= 中的实际文件夹的名称]/ 不一样。谁能指出问题是什么?我正在使用 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