/lib/modules/<version>/build/不存在

问题描述 投票:0回答:2

我正在尝试编写一个非常基本的“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命令,它会以红色打印,这意味着该目录已被弃用。它包含一个指向 ../../../usr/src/version_no 的链接,但令我惊讶的是,该链接中的版本号和 /usr/src/ 中实际文件夹的名称并不相同。谁能指出是什么问题吗?我使用的是centos 6.1。

linux linux-kernel centos linux-device-driver
2个回答
16
投票

这是因为您尚未下载特定内核版本的 linux 头文件。

假设您的内核版本是

4.15.0-32-generic
,请使用
sudo apt install linux-headers-4.15.0-32-generic

安装所需的头文件

就您而言,您可以通过

yum install kernel-devel kernel-headers


0
投票

是否有办法让 kbuild 系统包含所需的内核特定构建文件(即 install/lib/modules/${version}/build)?现在我这样做的方式只是使SIM卡链接到我的主机上的某些东西。 linux$ ls -l install/lib/modules/6.6.8-gc2502dbff599/ lrwxrwxrwx 构建 -> /home/linux

非常感谢有关如何正确填充此内容的任何帮助或澄清。我查看了 make module_prepare,但我认为这是不正确的,并且我不确定还可以尝试什么。

© www.soinside.com 2019 - 2024. All rights reserved.