설명

커널 소스 디렉토리 밖에서 모듈 소스를 작성하고 컴파일 할 경우에 사용되는 파일

이 파일을 컴파일 하기 위해서는 다음과 같은 명령을 사용한다.
여기서는 가장 일반적인 사용법에 대한 것을 설명한다.

그외 사용에 대한 자세한 설명은 커널 소스의 다음 문서를 참조하면 된다.

       Documentation/kbuild/modules.txt

모듈 디바이스 드라이버 컴파일

1) make
2) make -C <커널 디렉토리 패쓰> M=`pwd`
    make -C <커널 디렉토리 패쓰> SUBDIRS=`pwd`

1) 의 경우에는 Makefile 내부에 다음 두 가지 매크로 변수가 선언되어 있어야 한다.

KDIR
PWD 또는 SUBDIRS

KDIR : 모듈 디바이스 드라이버 소스가 참조하는 커널 디렉토리를 지정한다. ( 절대 경로 )
         시스템에 동작하는 커널 소스 위치를 찾는 방법은 다음과 같다.

         KDIR := /lib/modules/`uname -r`/build

PWD : 모듈 디바이스 드라이버 소스가 있는 디렉토리를 지정한다. (절대 경로)
SUBDIRS : PWD 와 같은 기능을 한다.

컴파일 결과물 삭제

make clean

컴파일 결과물인 모듈을 시스템에 설치

make modules_install

이 명령을 통해서 설치되는 위치는 시스템내에

/lib/modules/<kernel-version>/extra,

에 설치된다.

임베디드 시스템인 경우에는 이 명령을 사용하지 않는 것이 좋다.
특별한 위치를 지정하고 싶다면 INSTALL_MOD_PATH 변수를 사용하면 된다.

다음은 사용예 이다.

make INSTALL_MOD_PATH=/test modules_install

이 명령은 다음 위치에 모듈이 설치된다.

/test/lib/modules/$(KERNELRELEASE)/kernel

이름 Makefile
분류 module
타입 파일
커널 linux-2.6.21
GPL 관련 없음
헤더 -
인수 -
반환 -
에러 -
연관 -
주의 -
버그 -
작성 유영창

예제

#
# kernel 2.6 driver Makefile
#

obj-m  := test_driver.o

KDIR   := /staff/frog/test_kernel/linux-2.6.21
PWD    := $(shell pwd)

default:
    $(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules
    cp -f $(obj-m:.o=.ko) /nfs/au1200/.

clean :	
    rm -rf *.ko
    rm -rf *.mod.*
    rm -rf .*.cmd
    rm -rf *.o