Chinaunix首页 | 论坛 | 博客
  • 博客访问: 724409
  • 博文数量: 251
  • 博客积分: 10367
  • 博客等级: 上将
  • 技术积分: 2750
  • 用 户 组: 普通用户
  • 注册时间: 2007-05-10 14:43
文章分类

全部博文(251)

文章存档

2009年(2)

2008年(86)

2007年(163)

分类: LINUX

2007-07-24 22:26:01

 

在大多数时候,由于源文件太多,编译生成的中间目标文件太多,而

在链接时需要明显地指出中间目标文件名,这对于编译很不方便,所以,我们要给中间目标

文件打个包,在Windows下这种包叫库文件Library File),也就是 .lib 文件,在UNIX下,是Archive File,也就是 .a 文件。

 

一、Makefile的规则

在讲述这个Makefile之前,还是让我们先来粗略地看一看Makefile的规则。

    target ... : prerequisites ...

            command

            ...

            ...

    target也就是一个目标文件,可以是Object File,也可以是执行文件。还可以是一个

标签(Label),对于标签这种特性,在后续的伪目标章节中会有叙述。

    prerequisites就是,要生成那个target所需要的文件或是目标。

    command也就是make需要执行的命令。(任意的Shell命令

 

就要在make命令后明显得指出这个lable的名

字。这样的方法非常有用,我们可以在一个makefile中定义不用的编译或是和编译无关的命

令,比如程序的打包,程序的备份,等等。

 

五、让make自动推导

GNUmake很强大,它可以自动推导文件以及文件依赖关系后面的命令,于是我们就没必要

去在每一个[.o]文件后都写上类似的命令,因为,我们的make会自动识别,并自己推导命令

只要make看到一个[.o]文件,它就会自动的把[.c]文件加在依赖关系中,如果make找到一个whatever.o,那么whatever.c,就会是whatever.o的依赖文件。并且 cc -c whatever.c 也会被推导出来.

“.PHONY”表示,clean是个伪

目标文件。

 

        .PHONY : clean

        clean :

                -rm edit $(objects)

前面说过,.PHONY意思表示clean是一个伪目标,。而在rm命令前面加了一个小减号的

意思就是,也许某些文件出现问题,但不要管,继续做后面的事。

 

(待续)

(总结自:陈皓专栏【空谷幽兰,心如皓月】)

阅读(620) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~