CnUnix

[알림판목록 I] [알림판목록 II] [글목록][이 전][다 음]
[ CnUnix ] in KIDS
글 쓴 이(By): jaeswith (jaeswith)
날 짜 (Date): 2003년 2월  7일 금요일 오후 10시 34분 32초
제 목(Title): [Q] 커널모듈만들기에서 버젼안맞음문제



2.4.16 커널에 Linux Trace Toolkit 패치를 해서 사용하고 있습니다.
디바이스 드라이버 공부를 하려고 책(오랄리책) 사서, 첫번째 예제를 실행하는데, 
다음과 같은 에러가 납니다.

hello.o: kernel-module version mismatch
hello.o was compiled for kernel version 2.4.19
while this kernel is version 2.4.16-TRACE.

예전에는 2.4.19 커널을 쓰다가, LTT 패치 때문에, 2.4.16으로 다운그래드한적이 
있긴 하지만. 
어디서(www.kernel.pe.kr) 글을 찾아보니, 아래와 같은 글이 있어서, 
참조해서 링크를 바꾸었는데도 안 됩니다.
그리고 아래 글에 있는 /usr/src/linux/include/kernel 디렉토리는 없는거 같습니다. asm 디렉토리는 있습니다만....

답해주실 분께 미리 감사드리며.

--- 아래글 ---

: 안녕하세요 궁금하게 하나 있습니다.
:
: 간단한 모듈을 하나 만들었습니다.
:
: 소스는 이렇구요.
:
: ------------hello.o-----------
: #define MODULE
: #define __KERNEL__
:
: #include
: #include
:
: int init_module(void)
: {
: printk("Hello\n");
: return 0;
: }
:
: void clean_module(void)
: {
: printk("It cleaned\n");
: }
: ------------------------------
:
: gcc -c hello.c
: insmod hello.o
:
: 하면 다음과 같이 커널 버전이 틀리다고 나옵니다.
:
: hello.o:kernel-module version mismatch
: hello.o was compiled for kernel version 2.4.0-0.26
: while this kernel is version 2.2.17-8wl2.
:
: 제가 사용하는 리눅스는 와우리눅스 7.0입니다.
: 왜 2.4.0 버전으로 컴파일이 되는 걸까요?
: 알려주세요~~~

컴파일시 버젼확인을 /usr/include/linux/verison.h
를 가지고 합니다.
이녀석이 version 2.4.x로 되어있군요.

해결방법은
/usr/src에 linux source를 까신후
ln -sf /usr/src/linux/include/kernel /usr/include/kernel
ln -sf /usr/src/linux/include/asm /usr/include/asm
을 해주시면 됩니다.
원래 소스트리의 헤더부분인 include/asm 과 include/kernel이
/usr/include에 symbolic link되어 있게된는데 좀다르게 되있군요.
원래의 /usr/include/asm 과 /usr/include/kernel을
백업해두시고 위와 같이 하여 다시 컴파일해 보세요.

--- 퍼온글 끝 ---



--------------------------
Jang, Jae-wan
CA Lab., KAIST, KOREA
jwjang@camars.kaist.ac.kr
[알림판목록 I] [알림판목록 II] [글 목록][이 전][다 음]
키 즈 는 열 린 사 람 들 의 모 임 입 니 다.