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

标签 linux linux-kernel centos linux-device-driver

我正在尝试编写一个非常基本的“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/

相关文章:

c - 'passing file descriptors between processes' 是如何工作的?

linux-kernel - in_irq() 可靠吗?

mysql - Centos 5.5 - 将 Mysql 升级到 5.1 并使其正常运行

linux - Centos 6 启动脚本

linux - Linux服务器中的Mongodb

linux - Cygwin - 设置 $PATH

linux - 如何计算程序文件中的行数(多个),过滤一些文件和一些行?

linux - Docker 如何在 macOS 主机下运行 Linux 内核?

opencv - 构建opencv,未定义对avformat_network_init 错误的引用

linux - 如何在不使用 tr 的情况下删除空行?