시스탬콜 컴파일

익명 사용자의 이미지

test_systemcall.c
라는 파일을 만들었슴다.

리눅스 2.4.19 버전에서

unistd.h 에 호출번호 추가 했슴다.
#define __NR_newsyscall 250

entry.S 에 엔트리도 추가 했슴다

.long SIMBOLE_NAME(sys_newsyscall) /* 250 */
.rept NR_syscalls-250
.long SIMBOLE_NAME(sys_newsyscall)

kernel 디랙토리의 Makefile 에 test_systemcall.o 추가 해서

커널 빌드 했슴다.
소스는 아래와 같슴다. kernel 디랙토리에 작성 했슴다.

/* test_systemcall.c */
#include
#include
#include
#include

asmlinkage int sys_newsyscall()
{
printk("hello Linux\n");
return(0);
}

그리고 시스탬콜 호출하는 사용자 응용플그램을
만들었는데 컴파일이 안됨다.
소스는 아래와 같슴다. /usr/src/linux 디랙토리에 작성 했슴다.

#include
_syscall0(int,newsyscall);
main()
{
newsyscall();
}

그리고
/usr/src/linux 디랙토리에서

gcc test_systemcall.c
이렇게 했슴다

근데 함수 선언을 안했다는 에러가 나면서
컴파일이 안됨다.

지가 어디서 틀린 걸까요?

잘 아시는분께 도움을 부탁 드림다.

익명 사용자의 이미지

마지막 테스트 프로그램 컴파일시에...

unistd.h 파일 include시에...

실제 변경된 unistd.h 파일이 include되지 않아서 그렇습니다.

만약 변경된 커널이 /usr/src/linux 에 있지 않고 /work/linux 에 있다면

마지막 테스트 프로그램 컴파일시...

gcc -I/work/linux/include test.c

하시구요...

변경된 커널이 /usr/src/linux 에 있다면...

마찬가지로...

gcc -I/usr/src/linux/include test.c

-I 옵션이 없으면 gcc는 자동으로 /usr/include 에서 include합니다.

익명 사용자의 이미지

-B 라는 옵셧을 gcc에 주고 하니까
컴파일이 되드군요.

이렇게 간단한걸 몰라서 이틀을 삽질을 했슴다. ㅡㅡ;
혹시 책쓰시는 분들 보시면 이런것 좀 신경 써 주세요.

초보들은 문제를 어디서 찾아야 될지도 잘 모릅니다.
첨엔 소스 코드에 먼가를 잘못했나 해서 소스코드 고치고
커널 컴파일을 수차래 ㅡㅡ;

책에는 그냥 promp# gcc test.c 이렇게 해서 a.out 을 만든다
이렇게 나와 있으니
책에 나온대로 하면 되겠지 하며 밤 새도록 삽질을 했슴다.

그리고
리플 달아 주신분께 감사 드림다 ^^

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.