[Kernel] Kbuild system

development 2013. 7. 12. 19:54

Kbuild System



About Kbuild

 프로젝트 진행시 makefile 을 사용하면 빌드 과정을 단순화 시킬 수 있습니다. 하지만, 프로젝트의 규모가 커지면 makefile 도 그만큼 복잡해 지며 복잡해진 만큼 관리도 어려워 집니다.  

 Kbuild 는 이런 단점을 보안하기 위해 만든 makefile framework 이며, 규칙에 따라 간단하게 작성한 makefile 만으로도 복잡한 일을 수행할 수 있게 도와 줍니다. 


Kbuild 의 목적

  • 여러 플랫폼을 같은 방법으로 사용할 수 있게 할것.
  • 유연성있게 사용할 수 있어야 함. 
  • makefile 을 쉽게 만들수 있어야 하고 관리도 편해야 한다. 

 

Kbuild 가 지원하지 않는 기능

 Kbuild 는 빌드에 필요한 라이브러리나 헤더 등을 미리 확인해 주는 기능은 지원하지 않습니다. 

 이런 기능은 autoconfig tool(ex. configure..) 을 사용해야 합니다. 

 그렇다고 autoconfig tool 을 Kbuild 에서 사용할 수 없다는 건 아니므로 필요시 Kbuild 와 조합해서 사용하시면 됩니다. 


Kbuild 공식 사이트

 Kbuild 의 공식 사이트 주소는 아래와 같습니다.

 Kbuild 의 최신 버전이나 각종 정보를 얻을 수 있습니다. 


 http://svn.netlabs.org/kbuild


 최신버전 다운로드는 아래 주소를 클릭하시면 됩니다. (2013년 7월 12일 기준)

 

 http://svn.netlabs.org/kbuild/wiki/Download





Reference

http://svn.netlabs.org/kbuild/


블로그 이미지

김유석0

,
커널에 새로운 작업 디렉토리를 추가하고 싶을 경우가 있습니다. 

만약 arm 시스템이고,

추가하고 싶은 디렉토리가


   kernel/RTSP 

이라면,

Step 1. 디렉토리 생성 및 Kconfig, Makefile 생성

  mkdir kernel/RTSP
  kernel/RTSP/Kconfig
  kernel/RTSP/Makefile  


을 만든후에

Step 2. 생성한 디렉토리 정보 등록

  kernel/arm/Kconfig 

파일에

  source RTSP/Kconfig

라고 한 줄 추가해 주고

ᅟStep 3. kernel/Makefile 수정
 

  # Objects we will link into vmlinux / subdirs we need to visit
 
RTSP-y := RTSP/ 

  vimlinux-dirs := $(patsubst %/,%,$(filter %/, $(init-y) $(init-m) \
                      $(core-y) $(core-m) $(drivers-y) $(drivers-m)\
                      $(net-y $(net-m) $(libs-y) $(libs-m) $(RTSP-y) $(RTSP-m)))

  vmlinux-alldirs := $(sort $(vmlinux-dirs) $(patsubst %/,%,$(filter %/, \
                         $(init-n) $(init-) \
                         $(core-n) $(core-) $(drivers-n) $(drivers-)\
                         $(net-n) $(net-) $(libs-n) $(libs-) $(RTSP-n))))

  RTSP-y := $(patsubst %/, %/built-in.o, $(RTSP-y))

  vmlinux-main := $(core-y) $(libs-y) $(drivers-y) $(net-y) $(RTSP-y)
 

 kernel/Makefile 은 워낙 내용이 많아서 수정해야 할 부분만 발췌해서 정리하였습니다. 제대로 사용하려면 직접 Makefile 을 보면서 수정해야 합니다. 
 
 

'development' 카테고리의 다른 글

[kernel] obj-y ? obj-m ? obj-$(CONFIG_TEST) ?  (1) 2011.11.08
[kernel] 개발한 함수를 외부에 공개하는 법  (1) 2011.11.08
[program] memmove  (0) 2011.10.27
[kernel] struct list_head  (0) 2011.10.26
[program] scandir()  (0) 2011.10.26
블로그 이미지

김유석0

,