| [ 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 |