2011-06-21 10 views
2

マシンに最新のカーネルをダウンロードし、コンパイルしてインストールしました。今、私はカーネルモジュールを作成しようとしています。 致命的なエラー:sys/syscall.h:そのようなファイルやディレクトリがありません 致命的なエラー:linux/module.h:そのようなファイルやディレクトリがありません 私は書き直しを試みました私の最新のカーネルのソースから必要なディレクトリをインクルードするという方法でmakefileを作りましたが、それでも問題は永続的です。カーネルモジュールソースをコンパイルするときに標準ヘッダファイルをインクルードする方法は?

あなたの提案が必要です。

+0

私たちにコードを教えてください。また、標準ヘッダーファイルをモジュールに含めないでください。 – cnicutar

+1

カーネルモジュールのチュートリアルを読んだことはありますか?最新のカーネルには、モジュール用のビルド環境全体が付属していますので、それを使用してください。 (言い換えれば、問題について尋ねる前に何を得ているか教えてください)[この簡単な例](http://tldp.org/LDP/lkmpg/2.4/html/x208.htm)はあなたのために働きますか? –

+0

メークファイルを教えてもらえますか? – Fred

答えて

0

Makefileのようになります。

hello.ko: hello.c 
    make ARCH=um -C "/home/abhijit/play/kernel/linux-2.6" M=`pwd` modules 

obj-m:= hello.o 
objs:= hello.o 

、あなたのソースファイルで定義されてmodule_initmodule_exitを持っている必要があります。 これはありますか?

1

カーネルでlibcヘッダーを使用することはできません。

また、syscall.hが含まれているようです。 Syscallsは本質的にユーザスペースコールです。カーネル内部にはシステムコールは必要ありません。

linux/module.hのインクルードはうまくいくはずです。使用しているMakefileを教えてください。

+0

私のMakeファイルは次のようになります: obj-m + = file.o all: make -C/lib/modules/$ make(shell uname -r)/ build M = $(PWD)modules clean: make -C/lib/modules/$(shell uname -r)/ build M = $(PWD)clean カーネルモジュールのチュートリアルの1つで、これらのヘッダーファイルを含めることを提案しました。私はこの分野では新しいので、提案されたものを使用しました。 – Wrangler

関連する問題