본문 바로가기
실습/리눅스 커널

Kernel Module 컴파일을 위한 Makefile 만들기

by 써드아이 2021. 2. 8.

[블로그 통합으로 이전해 온 자료] - 2008. 4. 24. 01:41

 

 

 

ifneq ($(KERNELRELEASE),)
xxx-objs :=  main.o utils.o proc.o
obj-m := xxx.o

else
    KERNELDIR ?= /lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)

defualt:
    $(MAKE) -C $(KERNELDIR) M=$(PWD) modules

endif

clean:
    rm -rf *.o *~ core .depend .*.cmd *.ko *.mod.c .tmp_versions Module.symvers

- 단일 파일로 module을 만들 때는 xxx-objs 없이 obj-m 하나만 존재하면 된다.

- 여러개의 파일로 module을 만들 때는 obj-m에 최종적으로 생성할 module의 파일명 *.ko 가 *.o 형태로 입력되고 xxx-objs 에 obj-m에서 입력한 이름을 xxx 대신 입력하고 필요한 오브젝트 파일들을 나열해주면 된다. 여기에 나열되는 오브젝트 파일에는 obj-m 에 들어간 파일 이름이 존재해서는 안된다.

- 다른 타겟의 module을 만들 때는 kernel 소스의 Makefile에 ARCH 와 CROSS_COMPILE 이 미리 정의되어 있어야 하고 KERNELDIR 이 이 소스의 디렉토리가 되어야 한다.

'실습 > 리눅스 커널' 카테고리의 다른 글

커널 타이머, 태스크릿, 작업큐  (0) 2021.02.08
드라이버 코드의 실행 지연  (0) 2021.02.08
커널에서 Blocking I/O  (0) 2021.02.08
커널에서 condition race 제거  (0) 2021.02.08
Kernel Module - template  (0) 2021.02.08