system call 사용하는 코드가 컴파일이 안되네요..
systemp call 사용하는 소스를 짜는데 에러가 납니다.
소스에 추가한 헤더파일은 다음과 같습니다.
#include
#include
#include
#include
#include
에러내용은 다음과 같구요.
cc -D__KERNEL__ -D_LINUX -DMODULE -l/usr/src/linux/include -O -c -o openwrap.o openwrap.c
In file included from /usr/include/linux/config.h:4,
from /usr/include/linux/linkage.h:4,
from /usr/include/linux/kernel.h:11,
from openwrap.c:1:
/usr/include/linux/autoconf.h:1:2: #error Invalid kernel header included in userspace
In file included from /usr/include/linux/prefetch.h:13,
from /usr/include/linux/list.h:6,
from /usr/include/linux/module.h:12,
from openwrap.c:2:
/usr/include/asm/processor.h:56: `CONFIG_X86_L1_CACHE_SHIFT' undeclared here (not in a function)
/usr/include/asm/processor.h:56: requested alignment is not a constant
openwrap.c:8: warning: initialization makes pointer from integer without a cast
make: *** [openwrap.o] 오류 1
제가 쓰는 리눅스는 레드햇으로 커널버전은 다음과 같습니다.
Linux localhost.localdomain 2.4.20-8smp #1 SMP Thu Mar 13 17:45:54 EST 2003 i686 i686 i386 GNU/Linux
맨 처음 컴파일시에는 uaccess.h 파일이 없다는 등의 에러가 나와서 글을 검색해보니
제 pc에 커널소스가 존재하지 않아서였던거 같아서 커널 2.4.20 을 받아서
/usr/src/linux 에서 소스를 깔고 ./include/asm-i386/ 과 ./include/linux 를
/usr/include/asm 과 /usr/include/linux 에 각각 심볼릭링크를 걸어주었습니다.
그 후 에러는 많이 줄었지만 역시나 위와 같은 에러가 납니다.
제가 한 방법이 잘못된 것인지.. 아니면 더 추가해야할 사항이 있는지..
전문가님들의 많은 답변 부탁드립니다.. ^^a
혹시 kernel config 는 하셨는지..
커널 소스를 다운로드 받고 링크만 걸어준 것이라면 kernel config 를 하고 저장 후에 다시 한 번 해보시기 바랍니다.
댓글 달기