다음과 같은 간단한 Hello World 드라이버를 만들고 싶습니다.2 쪽그리고 Makefile을 사용하여 컴파일합니다.
obj-m := hello.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
하지만 나는 다음을 얻습니다.
만들다1: *** /lib/modules/4.3.5-300.fc23.x86_64/build: 해당 파일이나 디렉터리가 없습니다.
이것은 논리이기 때문에세워링크 /usr/src/kernels/4.3.5-300.fc23.x86_64
이고 내 /usr/src
디렉토리가 비어 있습니다.하지만커널 개발 설치됨 rpm -qa|grep kernel
::
kernel-headers-4.3.5-300.fc23.x86_64
kernel-modules-4.3.5-300.fc23.x86_64
kernel-core-4.2.3-300.fc23.x86_64
kernel-devel-4.3.5-300.fc23.x86_64
kernel-4.2.3-300.fc23.x86_64
kernel-modules-extra-4.3.5-300.fc23.x86_64
kernel-modules-extra-4.2.3-300.fc23.x86_64
kernel-core-4.3.5-300.fc23.x86_64
libreport-plugin-kerneloops-2.6.4-1.fc23.x86_64
abrt-addon-kerneloops-2.8.0-2.fc23.x86_64
kernel-4.3.5-300.fc23.x86_64
kernel-modules-4.2.3-300.fc23.x86_64
나는 이 패키지들이 이미 거기에 저장되어 있을 수 있다는 것을 읽었고 /usr/include
, 설치하려고 하면 당연히 이미 설치되어 있다는 메시지가 계속 나타납니다.
질문:hello.c를 hello.ko로 올바르게 컴파일하려면 makefile이나 설치 중 무엇을 해야 합니까?
저는 페도라 23을 사용하고 있습니다.
답변1
좋습니다. 제 임무는 커널과 모든 kernel-X 모듈을 업그레이드/설치하는 것입니다. 그 후 커널(적절한 버전) 디렉토리가 아래에 나타납니다./usr/src/kernels/