centos7中编写的内核模块代码,make报错fatal error: linux/regex.h: No such file or directory #include <linux/regex.h>
时间: 2024-01-01 11:04:01 浏览: 129
在 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
```
这应该可以解决您的问题。
相关问题
我在centos7中自己编写了一个内核模块,但是在通过makefile进行make时,却报错fatal error: linux/regex.h: No such file or directory #include <linux/regex.h> ^ compilation terminated. make[2]: *** [/home/dyc/Desktop/Test5/mymodule/Plus/message.o] Error 1 make[1]: *** [_module_/home/dyc/Desktop/Test5/mymodule/Plus] Error 2 make[1]: Leaving directory `/usr/src/kernels/3.10.0-957.el7.x86_64' make: *** [default] Error 2
这个错误提示是因为编译器找不到 linux/regex.h 这个头文件,可能是因为您的操作系统中没有安装相应的开发包。
您可以尝试安装 gcc、make 和 kernel-devel(或者 kernel-headers)等开发环境,方法如下:
1. 安装 gcc 和 make
```
sudo yum install gcc make
```
2. 安装 kernel-devel 或 kernel-headers(根据您的内核版本选择)
```
sudo yum install kernel-devel-$(uname -r)
```
或
```
sudo yum install kernel-headers-$(uname -r)
```
3. 进入您的内核模块目录,执行 make 命令
```
cd /path/to/your/module
make
```
如果还有问题,请提供更多的错误信息和您的内核模块代码。
阅读全文