编写的内核模块代码,make报错fatal error: linux/regex.h: No such file or directory #include <linux/regex.h>
时间: 2024-01-01 21:04:10 浏览: 136
这个错误通常是因为编译环境没有包含所需的文件或头文件。在这种情况下,您需要检查系统是否已安装所需的头文件。使用以下命令来安装缺少的头文件:
```
sudo apt-get install linux-headers-$(uname -r)
```
该命令将安装适用于您当前内核版本的头文件。完成后,重新运行make命令以编译内核模块。
相关问题
centos7中编写的内核模块代码,make报错fatal error: linux/regex.h: No such file or directory #include <linux/regex.h>
在 CentOS 7 中,`linux/regex.h` 文件已经被移除了,所以您需要修改您的代码,使用标准的 C 库 `regex.h` 替代。
您需要将 `#include <linux/regex.h>` 修改为 `#include <regex.h>`,并且将所有的 `regmatch_t` 修改为 `regmatch_t`。这样应该可以解决您的问题。
如果您需要使用 Linux 特有的正则表达式扩展,可以使用 POSIX 扩展来替代。您可以将 `#include <linux/regex.h>` 修改为 `#include <regex.h>`,并在编译时添加 `-D_GNU_SOURCE` 选项,以启用 POSIX 扩展。
例如,您的 Makefile 可能需要添加以下内容:
```makefile
CFLAGS += -D_GNU_SOURCE
```
这应该可以解决您的问题。
fatal error: linux/regex.h: No such file or directory #include <linux/regex.h>
这个错误是因为你的代码中包含了 `<linux/regex.h>` 头文件,但是该头文件在你的系统中不存在。
`<linux/regex.h>` 是 Linux 内核中的正则表达式头文件,而不是标准 C 库的一部分。如果你想使用正则表达式,可以使用标准 C 库中的 `<regex.h>` 头文件,它提供了与 POSIX.2 标准兼容的正则表达式功能。
如果你确实需要使用 `<linux/regex.h>` 头文件,那么你需要检查你的系统是否支持该头文件。如果你使用的是 Linux 系统,可能需要安装相应的开发包,以便获取该头文件。如果你正在使用其他操作系统,则需要查找类似于 `<linux/regex.h>` 的头文件或库,并将其添加到你的项目中。
阅读全文