리눅스 Makefile 에 대해서

declspec의 이미지

일반적인 Makefile 말고
커널 모듈을 위한 Makefile 을 보면

$(MAKE) ....

이런식으로 되어있고 그 저에

obj-m
obj-y 뭐 이런것들이 쭉 있고 한데
이게 대충 어떤식인지는 알겠는데
자세하고 정확하게 무슨일이 일어나는건지 모르겠어요

커널모듈 만들때랑 일반 app 만들때랑 문법이 다른건지...

이런것에 대해서 자세히 알수 있는
사이트나 자료 없을까요?

irondog의 이미지

일반 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'이 성공적으로 끝나는 것을 예상 할 수 있겠죠.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.