Linux Makefile 오류 관련입니다
글쓴이: tntlgh / 작성시간: 수, 2016/11/09 - 8:23오후
6시간째 헤매고 있습니다. 구글링으로 외국문서까지 다 뒤져봐도 이런 오류가 없는거같은데 왜 저만...
Vmware로 우분투 14.04사용중
Linux 3.18.44 커널컴파일 해서 모듈프로그래밍 하려고 hello.c 만들고 makefile 만들고 make 명령어 입력하니까
make[2]: *** No rule to make target '/missing-syscalls', needed by '__build'. Stop.
make[1]: *** [_module_] Error 2
make[1]: Leaving directory '/usr/src/linux-3.18.44'
make: *** [default] Error 2
이 에러에서 빠져나오질 못하고 있습니다. missing-syscalls에 대해선 어느정도 찾아봤는데 대체 __build 가 뭘 하라는건지 감을 못잡겠습니다... 아무리 구글링해도 안나오구요 ㅠㅠ
TAB 문제도 해결했는데 대체 왜이러는건지 답변 부탁드립니다 고수분들 ㅠㅠ!!!!!!!!
컴공 복수전공하느라 죽을거같은 영문과생이 올립니다 ㅠㅠ
코드 올려드립니다
Hello.c
#include <linux/init.h> #include <linux/kernel.h> #include <linux/module.h> int __init init_hello(void) { printk(KERN_ALERT "[Module Message] Hello, Module.\n"); return 0; } void __exit exit_hello(void) { printk(KERN_ALERT "[Module Message] Do you really want to break up with me?\n") ; } module_init(init_hello); module_exit(exit_hello); MODULE_LICENSE("GPL");
Makefile
KERNELDIR = /lib/modules/$(shell uname -r)/build obj-m = hello.o KDIR := /lib/modules/$(shell uname -r)/build PWD := $(shell pwd) default: $(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules clean: rm -rf *.ko rm -rf *.mod.* rm -rf .*.cmd rm -rf *.o
Forums:
커널 개발자는 아니지만, 호기심으로 걍 붙여넣기 해서
커널 개발자는 아니지만, 호기심으로 걍 붙여넣기 해서 실행하니까 되는데요.
제 환경이 조금은 다릅니다. Ubuntu 16.04.1, Kernel 4.4.0
문서에 나오는 것과 거의 유사한 예제라 특별할 것은 없어 보이네요.
http://www.tldp.org/LDP/lkmpg/2.6/html/lkmpg.html#AEN121
참고하실 내용으로,
커널 개발을 위해서는 아래 형태의 패키지가 설치되어 있어야 하고
linux-headers-4.4.0-40-generic (버전 번호는 다를 수 있습니다.)
제가 사용하는 버전으로 테스트 가능하시면 해보시고,
아래와 같이 온전한 전체 내용이 나오면, 좀 더 좋습니다.
안녕하세요
안녕하세요
저도 초보자인데요 컴파일 환경부터 체크해보심은 어떠하신지요
uname -r 해서 나온 거랑
ls /lib/modules/`uname -r`/build -l 이 올바른 커널 버전 소스에 연결 되어있는지 확인해보셔요
그리고 혹시나 해서 말씀드립니다만 컴파일 끝나면
그리고 혹시나 해서 말씀드립니다만 컴파일 끝나면 나오는 ko파일의 vermagic이 uname -r과 같아야 드라이버 probe가 가능합니다
뒤에 + 이렇게 글자 하나 차이로 probe유무가 갈려요 ㅎㅎㅎ
댓글 달기