쉘 스크립트를 만들때, 가장 첫 라인에 #!/bin/bash 를 왜 써야 하는지에 대하여 알아 보도록 하겠습니다. 쉘 스크립트의 가장 첫 라인에 !/bain/bash 를 쓰게 됨으로 해서, 내가 사용 하려는 명령어 해석기가 bash 쉘 임을 미리 알려주는 것입니다. 일반적으로 스크립트에서 #는 주석기호이지만, 첫라인의 #!/bin/bash 에서의 #은 주석기호가 아닙니다. 스크립트의 가장 첫라인에 있는 #! 은 스크립트의 제일 앞에서 이 파일이 어떤 명령어 해석기의 명령어 집합인지를 시스템에게 알려주는 역할을 합니다. #! 은 두 바이트의 "매직넘버"("magic number")로서, 실행 가능한 쉘 스크립트라는 것을 나타내는 특별한 표시자입니다. #! 바로 뒤에 나오는 것은 경로명으로, 스크립트에 들어..
디바이스 드라이버 작업을 하다 보면 자주 보게 되는 매크로중으 히나가바로 container_of 매크로 입니다.이해가 가는 것 같기도 하고 아니것 같기도 하고 묻는 사람도 있고 해서오늘은 이 매크로에 대해서 한번 알아 볼가 합니다. 일단 함수 원형을 한번 볼까요? lxr 사이트에서 긁어 왔습니다.위치는 include/linux/kernel.h 입니다. 650#define container_of(ptr, type, member) ({ \ 651 const typeof( ((type *)0)->member ) *__mptr = (ptr); \ 652 (type *)( (char *)__mptr - offsetof(type,member) );}) 이건 뭐 상당히 거시기 하군요.뜯기 전에 좀 쉬운 예를 들어 보..
모듈과 커널 버전 모듈은 커널 버전과 관련이 많습니다. 커널 버전에 맞춰서 모듈이 빌드되며, 커널의 버전과 모듈의 버전이 일치해야만 이용할 수 있습니다. 커널 소스에서 커널의 버전은 include /linux/version.h에서 확인할 수 있습니다. #define UTS_RELEASE "2.6.14.6" #define LINUX_VERSION_CODE 132622 #define KERNEL_VERSION(a,b,c) (((a) 종류설명EXPORT_SYMBOL(var)심볼을 공개합니다.EXPORT_SYMBOL_NOVERS(var)심볼을 버전정보 없이 공개합니다.EXPORT_SYMBOL_GPL(var)EXPORT_SYMBOL과 동일 하지만 GPL과 호환되는 라이선스로 등록한 모듈에서만 심볼을 볼 수 있습니..
Document/kbuild/makefile.txt 및 Document/kbuild/modules.txt 문서를 번역편집한 문서정리출처좌표 : http://deepbluedawn.wordpress.com/2009/07/31/169/ 이 문서는 리눅스 커널 2.6.x에 사용되는 kbuild System의 module build과정에 대해 설명하기 위한 문서입니다.Linux Kernel소스의 Documents/kbuild/makefiles.txt 및 Documents/kbuild/modules.txt문서를 번역및 편집한 것입니다. 따라서 상당부분이 난해하기도 하고 직역을 한 부분이 있으니 이해해 주셨으면 합니다. 번역이 매끄럽지 못한 부분은 반드시 원문을 읽어 영어 단어의 뜻을 파악하시기 바랍니다.1.Kbu..
원본 : http://korea.gnu.org/manual/4check/make-3.77/ko/make_toc.html GNU Make재컴파일을 지휘하는 프로그램(A Program for Directing Recompilation)GNU make Version 3.77.May 1998번역시작: March 2000최종 갱신: May 9th, 2000Richard M. Stallman 그리고 Roland McGrath역자: 선정필make 개관(Overview of make)이 매뉴얼을 읽는 방법(How to Read This Manual)문제점과 버그(Problems and Bugs)Makefile 소개(An Introduction to Makefiles)규칙의 모습(What a Rule Looks Like..