아주 간단한(hello출력) 모듈 컴파일시 에러가 납니다.
제가 짠 소스입니다.
(현재 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/include를
커널 소스가 위치한 곳으로 지정해주시면 될 듯합니다.
-I/usr/src/linux
or
-I/usr/src/linux/include ...
...
댓글 달기