2017-11-28 11 views
0

私はLinuxカーネルのメモリ情報の使用になりますCコードの書き込みをしようとしている返さない(プロセスの仮想アドレス空間、プロセスと、そのような情報の状態を。)を含むLinuxのヘッダは、そのようなファイルやディレクトリ

私はこれらの情報を取得するには、以下のヘッダをインクルードする必要があります。

#include<linux/init.h> 
#include<linux/module.h> 
#include<linux/mm.h> 

実際のファイルは、Linuxのフォルダの下に存在しますが、私はこのエラーを取得していますなぜ

No such file or directory

誰かが説明していただけますことはgccを使用して、それが返すファイルをコンパイルするときに!何をすべきか?

  • 私はすでにカーネルをコンパイルしてインストールして利用可能なすべての更新プログラム(カーネルバージョン3.16.0)
+0

「apt get」を使用してインストールしない場合、 'linux-headers-3.16.0'をインストールしましたか?別のオプションは、それらのヘッダファイルのパスを見つけ、 '-I'フラグを使って' gcc'でコンパイルするときの相対パスを含みます。 – LethalProgrammer

+0

*実際のファイルは、コンパイラが、/ usr /含める/ linux' 'に見ている* Linuxのフォルダの下に存在しますが、そこにそれを見つけることができません。多分それは他の場所にありますか?コンパイラがどこを見るかを知るために '-I [path of(parent of)linux folder]'を追加しようとしています! –

+0

'gcc -I'を使ってコンパイルしたヘッダーをインストールしましたが、このエラーが発生します。'致命的なエラー:uapi/linux/stddef.h:ファイルやディレクトリがありません #include 私は私のコード –

答えて

0

あなたの質問への答え。

apt-get

NOTEを使用して、不足しているパッケージkernel-develをインストールします。私はあなたが例yumお使いのシステムでサポートされているものを使用することができますパッケージをインストールapt言及しました。

カーネル-develのインストールすることはできませんならば、あなたは、一般的なLinuxのヘッダをインストールするこれを試すことができます。

sudo apt-get update && sudo apt-get install linux-headers-`uname -r` 

次に、あなたはinit.hまたはmodule.hがlocateユーティリティに

を使用して場所を確認し、その後、-Iフラグを使用してコンパイルしてパスを追加することができます。

gcc -g your_file.c -I/usr/path/of/the/kernel/header/include 
+0

このようなヘッダを含まないよながら 'OPは、Debianベースのディストリビューションを使用していることは示されていません。彼らはそうかもしれませんが、これは一般的なディストリビューションからは独立したものではありません。 – tripleee

+0

OK、私は、インストールパッケージソフトウェアyumまたはsudo aptまたは利用可能なパッケージを使用します。 – LethalProgrammer

+0

'gcc -I'を使ってコンパイルしたヘッダーをインストールしましたが、このエラーは致命的なエラーです:uapi/linux/stddef.h:そのようなファイルやディレクトリはありません'私は自分のコードにそのようなヘッダーを含めません。 –

関連する問題