割り込みコードの開発中です。これを含めると#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
アクセスできなくなります)。