소스파일 컴파일하는데 에러가 생깁니다

저는 현재 커널 2.6.30.6을 사용하고 있구요.
간단한 프로그램을 모듈로 적재하려고 하고 있어요.

코드 : hello_module.c

#include <linux/init.h>
#include <linux/module.h>
#include <linux/kernel.h>

static int hello_init(void)
{
printk(KERN_ALERT "Hello Module Programming.\n");
return 0;
}

static void hello_exit(void)
{
printk(KERN_ALERT "Bye Bye!\n");
}
module_init(hello_init);
module_exit(hello_exit);
MODULE_LICENSE("GPL");

그리고 Makefile

obj-m := hello_module.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 .
.cmdd
rm –rf *.o
rm –rf *.markers
rm –rf *.symvers
입니다.

소스에는 이상이 없는 것 같은데, gcc로 컴파일하면 에러가 납니다.
에러 메세지는…
[attachment=0:nt9yryyc]Screenshot-root@ubuntu_ ~-test-week3.png[/attachment:nt9yryyc]
위와 같이 나옵니다.

문제는 헤더파일이 linux 디렉토리 안에 없다는 뜻 같은데 파일시스템을 검색해 보니까
역시 없네요…왜 없는 건가요??
헤더파일을 따로 설치를 해야하는 건가요? 아니면 커널을 처음부터 다시 컴파일 해야 하는건가요??

이런 간단한 프로그램조차 컴파일 못하고 있으니 답답하네요…

Makefile 을 만드셨으면 make 를 실행하세요.

디바이스 드라이버를 유저어플처럼 컴파일 하시면 될리가… =.=

컴파일 잘 됩니다.

커널소스가 설치 되었는지 확인해보시죠. :D

sudo apt-get install linux-headers-uname -r

해서 커널 헤더를 설치해준뒤

ls -al /lib/modules/uname -r/build
ls -al /lib/modules/uname -r/source
해서 설치한 커널 헤더 디렉토리를 심볼릭 링크하고 있는지 확인한뒤 새로 시도해 보세요,

lrwxrwxrwx 1 root root 32 2009-07-18 00:21 /lib/modules/님의 커널 버젼/build -> /usr/src/linux-headers-님의 커널버젼
lrwxrwxrwx 1 root root 32 2009-07-18 00:21 /lib/modules/님의 커널 버젼/source -> /usr/src/linux-headers-님의 커널버젼
처럼 나와야합니다.