致命的なエラー: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アクセスできなくなります)。

関連情報