
Hello World LKM の最初の例に従っており、これをコンパイルする必要があります。
この本によれば、Makefile は次のようになる必要があります。
obj-m+=hello_world.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
(実行しないsudo make
とすべての Linux カーネル ヘッダーが再コンパイルされると言われています)。
これを実行すると、次のように出力されます。
make -C /lib/modules/5.10.63+/build/ M= modules
make[1]: Entering directory '/usr/src/rpi-5.10.y'
/bin/sh: 1: cannot create include/generated/uapi/linux/.version.h.tmp: Permission denied
UPD include/generated/uapi/linux/version.h
mv: cannot stat 'include/generated/uapi/linux/.version.h.tmp': No such file or directory
make[1]: *** [Makefile:1277: include/generated/uapi/linux/version.h] Error 1
make[1]: Leaving directory '/usr/src/rpi-5.10.y'
make: *** [Makefile:4: all] Error 2
sudo make
そして、 Makefile コマンドを実行または変更するとsudo make -C ...
、終了しません (2 時間以上経過してもまだ待機中)。
カーネルが最新のもの (5.10.63+) であるため実行できませんでしたsudo apt install linux-headers-'uname -r'
(' は無視してください。` ですが、ここには配置できません)。ただし、すべての Linux カーネル ヘッダーを手動でコンパイルする方法を説明した本のすべての手順に従ったため、それらは揃っているはずです。
何かアイデアはありますか? 追加情報が必要な場合は、実行する必要があるコマンドを教えていただければ、出力を添付します。
ありがとう!