
我正在關注 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 ...
它永遠不會結束(>2h 並且仍在等待)。
我無法運行sudo apt install linux-headers-'uname -r'
(忽略 ',它們是 ` 但我不能將其放在這裡),因為內核是最後一個(5.10.63+),但我已按照書中講述如何執行的所有步驟進行操作手動編譯所有Linux內核頭文件,所以我應該擁有它們。
任何想法?如果您需要一些額外的信息,只需告訴我需要運行什麼命令,我將附上輸出。
謝謝!