Chinaunix首页 | 论坛 | 博客
  • 博客访问: 307147
  • 博文数量: 76
  • 博客积分: 1662
  • 博客等级: 上尉
  • 技术积分: 764
  • 用 户 组: 普通用户
  • 注册时间: 2008-06-25 17:04
个人简介

辛勤的鸟儿总能找到虫子....

文章分类

全部博文(76)

文章存档

2017年(1)

2013年(4)

2012年(5)

2011年(4)

2010年(32)

2009年(23)

2008年(7)

分类: LINUX

2008-08-16 22:13:50

  前几天自己做了一个sd卡的驱动,在把sd卡驱动加入内核时要写一个makefile.in文件来管理sd卡的驱动程序.
  现在我就想写写makefile的一些基本规则,其实makefile文件的框架很简单的,总的说来是:
  target...:prerequisites....
       command
      ....
      ....
这里,target就是一个目标文件,可以是object file,也可以是执行文件,还可以是一个标签(后面会说).
prerequisites就是生成target目标文件所需要的文件也可以说是依赖文件.
command就是make需要执行的命令即生成目标文件所要的命令.
 说到底,makefile就是这么一点东西,规则的本质也就这么一点.
下面谈谈常用的一些方法(我不知道怎么表达好,暂且就这么说好了)
   makefile变量
 如果用户要以相同的编译选项同时编译多个c源文件,而为每个目标的编译指定冗长的编译选项的话,将是非常乏味的.但是利用简单的变量定义,就可以避免这类乏味的工作.
例:  
  prog:prog1.o prog2.o 
    gcc -o $@ prog1.o prog2.o
    prog1.o: prog1.c lib.h
    gcc -c -I. -o $ @$ <
prog2.o: prog2.c
gcc -o $*.c
clean:
 rm -f prog1.o prog2.o
这里可以用一个变量来代替
 obj=prog1.o prog2.o
prog:$(obj)
gcc -o prog $(obj)
prog1.o:prog1.c lib.h
gcc -c -I. -o <
prog2.o: prog2.c
gcc -o $*.c
clean
rm -f $(obj)
可以看出用obj代替prog1.o和prog2.o要简单的多.
还有GUN make包含一些内置的或隐含的规则(主要有2种)
1.后缀规则
后缀规则是定义隐含规则的老风格方法.后缀规则定义了将一个具有某个后缀的文件(例.c)转换为具有另一肿后缀的文件(例.o)的方法.
2.模式规则
这种规则更加通用,因为可以利用模式规则定义更加复杂的依赖性规则.模式规则看起来非常类似于正则规则,但在目标目标名称的前面多了一个%号,同时可用来定义目标和依赖文件的关系.
 
阅读(625) | 评论(0) | 转发(0) |
0

上一篇:没有了

下一篇:磁盘结构与分区

给主人留下些什么吧!~~