
저는 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 및 여전히 대기 중).
커널이 마지막 커널(5.10.63+)이기 때문에 실행할 수 없습니다 sudo apt install linux-headers-'uname -r'
(' 무시, `이지만 여기에 배치할 수 없음). 하지만 책에서 방법을 알려주는 모든 단계를 따랐습니다. 모든 Linux 커널 헤더를 수동으로 컴파일하므로 있어야 합니다.
어떤 아이디어? 추가 정보가 필요한 경우 실행해야 하는 명령이 무엇인지 알려주시면 출력을 첨부해 드리겠습니다.
감사해요!