모듈프로그래밍에서 insmod 할때 에러 메시지

jwlegend의 이미지

모듈 프로그래밍 하는 초보입니다.

컴파일 옵션을
gcc -D__KERNEL__ -DMODULE -c -O2 test.c
이렇게 했습니다.
이렇게 해서 생긴 obj파일을 "insmod test.o" 를 했더니
"kernel--module version mismatch"라고 하면서 밑에 뭐라고 나오더군여.
이게 뭐때문에 그런건지~~~ㅡ.ㅡ
문서를 찾아봐도 왜 그런건지 찾을수가 없더라구요.

참고로 전 fedora를 사용하고있으며, 커널버전은 2.4.22입니다.

emptysky의 이미지

참조하는 헤더파일의 커널 버젼이 틀린것입니다.
/usr/include 의 asm, linux 디렉토리들을 현재의 커널버젼 헤더 소스로 링크걸어주면 됩니다.

『 아픔은.. 아픔을 달래줄 약이 무엇인지 알면서도 쓰지 못할 때 비로소 그 아픔의 깊이를 알수가 있음이다. 』
『 for return...』

익명 사용자의 이미지

uname -r 해서 나온 버젼하고..

/usr/src/linux/version.h

에서 나온 버젼하고 틀려서 그럽니다..

버젼 맞춰주세요

hwandori의 이미지

insmod -f test.o 하면 버전 무시하고 올려지긴 합니다..

powerson의 이미지

음.. 테스트 할때는 -f가 좋지만.. 가급적 -f는 안 쓰시는게 좋습니다.. 특히 윗분의 문제 같은 경우는.. 커널 버전이 안 맞으니.. 더더욱이죠..

------------------------------------------------------
아직은 젊다. 모든 것을 할 수 있는 나이란 말이지.

kim1158의 이미지

하암 wrote:
uname -r 해서 나온 버젼하고..

/usr/src/linux/version.h

에서 나온 버젼하고 틀려서 그럽니다..

버젼 맞춰주세요

하암님 말씀이 맞습니다.
현재 부팅된 커널이미지의 버젼과 링크된 헤더파일이 가리키는 버젼이
틀려서 입니다.
현재 부팅된 커널이미지의 버젼정보를 가리키도록 ln으로 링크를 수정해주세요.

모든 디지털의 목표는 아날로그.