致命错误:linux/interrupt.h:没有这样的文件或目录

致命错误:linux/interrupt.h:没有这样的文件或目录

我正在开发中断代码。当我包括在内时#include <linux/interrupt.h>,我得到

fatal error : linux/interrupt.h no such file or directory

为什么我会收到此错误以及如何解决此错误?

相反,当我包含该头文件时,我会再收到一个错误。最后我会得到 linux/compiler.h 错误。

但所有这些文件都存在于/usr/src/linux-headers-4.4.0-151/include/linux/

你能帮我找到这个问题的解决方案吗?

答案1

A#include <linux/interrupt.h>默认情况下看起来是/usr/include.这一次,它将寻找/usr/include/linux/interrupt.h.该文件不存在,因为在Linux中,默认情况下您正在开发用户空间应用程序。它们对任何系统范围中断的访问非常有限。

您的 , 中的文件/usr/src/linux*/include/linux是内核头。用户空间应用程序无法使用它。它仅可用于内核模块。

简而言之,/usr/include/linux包含标题让用户空间进程处理内核API。而/path-to-kernel-source/include/linux包含内核使用的内部头文件。 Linux 内核开发人员在开发内核模块时最常面临这些问题。

如果您正在进行用户空间开发,您应该以非常不同的方式与 CPU 中断进行交互。如果您不使用中断等,或者您正在使用内核模块来执行此操作,那么最好。

如果您正在进行 Linux 内核(内核模块)开发,您应该使用非常不同的 gcc 标志(它们将使通用的/usr/include无法访问)。

相关内容