2003. 6. 16. 04:46
우선 알아둘것은

우리가 리눅스 에서 C 프로그래밍을 할때
참조하는 헤더파일이 있는 곳의 위치이다.

일반적으로
/usr/include
라는 디렉토리이다.

즉 시스템 프로그래밍을 할때 다음과 같이 include하게 되는데

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

이 말은

/usr/include/linux/kernel.h
/usr/include/linux/module.h

를 인클루드 한다는 뜻이 된다.

모듈 컴파일시 버젼 미스매치가 일어나는 것은
현재 구동되고 있는 커널의 버젼과
현재 컴파일시 참조하는 커널소스의 버젼이 틀리게 때문이다.
(현재 구동중인 커널 버젼알아내기 : uname -a)

그렇다면 이것을 어떻게 해결할 것인가
간단하게 말해 참조하는 커널소스의 버젼과
현재 구동중인 커널의 버젼을 일치시켜 주면 된다.

커널소스는 아시다시피 구할데가 많다.
알아서 구하도록 하자~

리눅스 설치시 옵션에 따라
현재 구동중인 커널 소스가 설치가 되기도 하고
안되기도 한다.

안되어있다면 커널소스를 받아 설치를 하자
rpm버젼을 받아 설치하면 된다

그럼 이제 본격적으로 커널소스 버젼과
구동중인 커널 버젼을 일치시켜 보자

커널소스가 있는 곳은 어디인가?
일반적으로

/usr/src/

이다

여기에 보면  linux-2.x.x  대충 이런식의 디렉토리가 있다.
여기에 커널 소스가 들어있고
그 안에 들어가면 include 란 디렉토리가 있다.
이것을
/usr/include와 바꺼치기 하면 된다.
단 백업을 해두는 것이 신상에 이롭다.. 다시깔기 시르면..ㅡㅡ;;;

가장 안전한 방법은
커널 컴파일을 한번 해준다음

(커널 소스 디렉에 들어가서  make 이라고 치면 뭐라 묻는게 절라 많이 나오는데 우리는 초보이므로 무조건 엔터만 친다.
절라 치다 보면 끝난다. 그리고 나서
make dep
하고 나서 리부우우웃~~~)

include 를 바까치기 하는 거시다.

그럼 100% 된다.~^_________^