일반 app을 만들 때도 복잡한 app의 경우에는 makefile을 만든이에 따라 지켜야 할 규칙들이 생겨납니다.
커널모듈(디바이스 드라이버)의 경우 kernel빌드시 워낙 복잡한 규칙이 있기에 그 규칙을 단순화하여 지키기를 요구하는 것이지요.
참고로 커널모듈 빌드시
obj-m에 포함되는 object파일들은 차후 커널에 모듈 형태로 붙는다고 의미를 부여하는 것이고(insmod사용)
obj-y는 아마 커널에 기본으로 들어 있는 object파일들이라는 의미가 있을 겁니다. 모듈을 붙이거나 떼어내지 않고 커널과 함께 주구장창 메모리에 떠 있는 애들이란 뜻일거라고 봅니다.
make 는 기본적으로 의존성을 따져서 순서대로 수행해주는 툴입니다.
보통 'make' 또는 'make all'이라고 명령을 내리면 'all'을 빌드라하라는 의미고
all: modules kernel
modules: a b c
kernel: d e f
a:
b:
c:
d:
e:
f:
소스를 보면 all을 빌드하기 위해서는 modues와 kernel이라는 애들이 올바르게 수행되어야만 합니다.(여기서 all은 modules, kernel에 의존성을 가지고 있다고 봐야겠죠.)
그리고 modules와 kernel은 각각 'a,b,c', 'd,e,f'에 의존성을 가지고 있어서 각 수행이 정상적으로 이루어져야만 합니다.
이런 의존성을 분석해보면 제일 먼저 a,b,c,d,e,f가 각각 성공적으로 수행이 되어야 'make all'이 성공적으로 끝나는 것을 예상 할 수 있겠죠.
make로 만든 몇가지 규칙이 추가되어 있는 것이죠.
일반 app을 만들 때도 복잡한 app의 경우에는 makefile을 만든이에 따라 지켜야 할 규칙들이 생겨납니다.
커널모듈(디바이스 드라이버)의 경우 kernel빌드시 워낙 복잡한 규칙이 있기에 그 규칙을 단순화하여 지키기를 요구하는 것이지요.
참고로 커널모듈 빌드시
obj-m에 포함되는 object파일들은 차후 커널에 모듈 형태로 붙는다고 의미를 부여하는 것이고(insmod사용)
obj-y는 아마 커널에 기본으로 들어 있는 object파일들이라는 의미가 있을 겁니다. 모듈을 붙이거나 떼어내지 않고 커널과 함께 주구장창 메모리에 떠 있는 애들이란 뜻일거라고 봅니다.
make 는 기본적으로 의존성을 따져서 순서대로 수행해주는 툴입니다.
보통 'make' 또는 'make all'이라고 명령을 내리면 'all'을 빌드라하라는 의미고
소스를 보면 all을 빌드하기 위해서는 modues와 kernel이라는 애들이 올바르게 수행되어야만 합니다.(여기서 all은 modules, kernel에 의존성을 가지고 있다고 봐야겠죠.)
그리고 modules와 kernel은 각각 'a,b,c', 'd,e,f'에 의존성을 가지고 있어서 각 수행이 정상적으로 이루어져야만 합니다.
이런 의존성을 분석해보면 제일 먼저 a,b,c,d,e,f가 각각 성공적으로 수행이 되어야 'make all'이 성공적으로 끝나는 것을 예상 할 수 있겠죠.
댓글 달기