아주 간단한(hello출력) 모듈 컴파일시 에러가 납니다.

ares666의 이미지

제가 짠 소스입니다.
(현재 HaanLinux2005를 쓰고 커널버젼은 2.6.9-71hs입니다)

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

int init_module(void)
{
printk("Hello!!!\n");
return 0;
}

void cleanup_module(void)
{
printk("Good Bye!!!\n");
}

hello.c로 저장 후 저장후 컴파일 했습니다.

gcc -o hello.o -c hello.c -D__KERNEL__ -DMODULE -O2 -Wall -I/usr/include

컴파일 후 출력 결과는 아래와 같습니다.

In file included from /usr/include/linux/module.h:10,
from hello.c:2:
/usr/include/linux/config.h:5:2: #error Incorrectly using glibc headers for a kernel module
hello.c: In function `init_module':
hello.c:6: warning: implicit declaration of function `printk'

여러 질답란을 검색해 봤지만...해결방법을 찾을 수 없네요..

여러가지 방법도 써봤는데...해결이 불능..

써본 방법 중에는

1번)
#ifdef CONFIG_MODVERSIONS
#define MODVERSIONS
#include <linux/modversions.h>
#endif
소스에 위 코드 추가

2번)
#include <linux/init.h>
소스에 위 코드 추가

3번)
make menuconfig해서
Module unloading, Forced module unloading, Automatic kernel module loading "Enable"

그래두 전부 위와 똑같은 에러 메세지가 뜨네요...

어떤 부분이 틀린건가요...

익명 사용자의 이미지

-I/usr/include를

커널 소스가 위치한 곳으로 지정해주시면 될 듯합니다.

-I/usr/src/linux

or

-I/usr/src/linux/include ...

...