我正在开发中断代码。当我包括在内时#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
无法访问)。