3

カーネルモジュールの開発は初めてです。そこで、参照用に「The Linux Kernel Module Programming Guide」という本を使用している単純な hello world カーネル モジュールから始めました (カーネル 2.6 に対応しています)。yum を使用して kernel-devel および kenel ヘッダーをインストールしました。私はfedora 17を使用しています。シンボリックリンクが見つかりました

/lib/modules/3.3.4-5.fc17.x86_64/build -> /usr/src/kernels/3.3.4-5.fc17.x86_64

これで、1 つの hello-1.c (単純なカーネル モジュールと作業ディレクトリ内の Makefile) ができました。Makefile は次のとおりです。

obj-m += hello-1.o
all:
    make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
clean:
    make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean

$make でエラーが発生する場合:

make -C /lib/modules/3.3.4-5.fc17.x86_64/build M=/root/kerneldev modules
make: *** /lib/modules/3.3.4-5.fc17.x86_64/build: No such file or directory.  Stop.
make: *** [all] Error 2

/lib/modules/3.3.4-5.fc17.x86_64/build には実際のモジュール (シンボリックリンクではない) が含まれていたため、Centos-5.x で同じプログラムを正常に実行します。問題は何ですか?なぜそのような違いは?

4

3 に答える 3

0

「yum install kernel-devel」を試してください(カーネルヘッダー用)

于 2013-07-16T09:50:07.107 に答える
0

どこで make コマンドを発行したかなど、いくつか疑問があります。あなたの現在のディレクトリは

M=/root/kerneldev

hello-1.c が/root/kerneldevフォルダーにあるかどうか。

于 2013-01-30T19:25:40.490 に答える