커널 API
설명
커널 소스 디렉토리 밖에서 모듈 소스를 작성하고 컴파일 할 경우에 사용되는 파일
이 파일을 컴파일 하기 위해서는 다음과 같은 명령을 사용한다.
여기서는 가장 일반적인 사용법에 대한 것을 설명한다.
그외 사용에 대한 자세한 설명은 커널 소스의 다음 문서를 참조하면 된다.
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