커널 모듈 프로그래밍에서 컴파일후 모듈 올리기에서 에러발생

kaebbi의 이미지

자세한 하드웨어 스펙을 넣어 주세요.
- 사용OS 한컴리눅스 Advanced Server 3.1
- CPU Xeon 2.4G X 2
- MainBoard intel
- VGA ati
- HDD 140G scsi
- CDROM 40X IDE
- Sound Card None
- LAN Card 100M

문의 내용
Kernel module Programming을 작성해서 컴파일 했습니다.
Object 파일까지 잘 만들어졌는데 insmod를 하니
다음과 같은 에러 메시지가 나옵니다.
"mydrv.o kernel-module version mismatch
mydrv.o was compiled for kernel version 2.4.21-2custom
while this kernel is version 2.4.21-2smp."

참고로 mydrv.c는 리눅스 매니아를 위한 커널 프로그래밍 책에 나오는 소스코드 그대로 입니다.
makefile 내용은
TARGET = mydrv
WARN = -W -Wall -Wstrict-prototypes -Wmissing-prototypes
INCLUDE = -isystem /lib/modules/2.4.21-2smp/build/include
CFLAGS = -O2 -DMODULE -D__KERNEL__ ${WARN}

mydrv.o mydrv.c
gcc ${INCLUDE} -c ${CFLAGS} mydrv.c

.PHONY clean

clean
rm -rf ${TARGET}.o
입니다.
참고로 /usr/include/linux는 /usr/src/linux-2.4.21/include/linux
/usr/include/asm은 /usr/src/linux-2.4.21/include/asm
/usr/include/scsi은 /usr/src/linux-2.4.21/include/scsi
심볼릭 링크를 만들어 놓았습니다.
uname -r 결과는 "2.4.21-2smp" 입니다.

한컴리눅스를 풀 패키지로 설치했습니다
/usr/src/ 디렉토리 밑에는 linux-2.4.21이란 디렉토리와 hancom이란 디렉토리가 존재합니다

cleaneye의 이미지

일단 문제는 시스템에서 동작하고 있는 커널과 컴파일 시 include 시킨 커널의 버전이 상이하기 때문에 발생한 문제인 것 같습니다.

include 시키신 디렉터리의 커널 버전을 확인해보시면 될 것 같습니다.

네 갈길을 가라! 남이야 뭐라든!

sjpark의 이미지

버전관리 옵션을 꺼주세요
커널 옵션에 있어요

codeart의 이미지

아마 배포판에 깔려있는 소스는 현재 운영되고 있는 커널하고 같겠지요??
근데 custom이라고 꼬리말이라고 붙어 있더라고요...
그냥 아무생각없이.. 고쳤지요...
/usr/src/linux/>grep custom Makefile
찾아서 custom부분을 제거하고 현재 버젼과 일치하게...
make menuconfig (그냥 별다른 체크 안 해도 되는데 아얘 안 해도 될 것 같기도 하고요 저도 초짜라... -- 그냥 dep만 해보시고 결과 좀...)
make dep

그냥 워닝 무시하고 강제로 가결하려면...

insmod -f 탄핵.o

미래를 수정할 수 있는 때는 현재이다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.