Chinaunix首页 | 论坛 | 博客
  • 博客访问: 113685
  • 博文数量: 24
  • 博客积分: 920
  • 博客等级: 准尉
  • 技术积分: 325
  • 用 户 组: 普通用户
  • 注册时间: 2009-08-12 16:16
个人简介

努力做个顶好的程序匠

文章分类

全部博文(24)

文章存档

2013年(1)

2011年(2)

2010年(21)

我的朋友

分类: LINUX

2010-05-13 10:37:19

 
 
写简单的makefile,对多文件进行编译,Make有完善机制对整个项目源代码进行编译
 
db:dboperation.o testdboperation.o
 gcc -o db dboperation.o testdboperation.o -ldb
dboperation.o:dboperation.c
 gcc -c dboperation.c
testdboperation.o:testdboperation.c
 gcc -c testdboperation.c
clean:
 rm dboperation.o
 rm testdboperation.o
 rm db
 
Makefile具有隐含规则将相应的xx.c源文件编译成目标文件xx.o,所以makefile可写成
 
db:dboperation.o testdboperation.o
 gcc -o db dboperation.o testdboperation.o -ldb
clean:
 rm dboperation.o
 rm testdboperation.o
 rm db
 
利用变量
CC=gcc
CFLAGS=-o
OBJFLAGS=-c
db:dboperation.o testdboperation.o
 $(CC) $(CFLAGS) $@ $^ -ldb
dboperation.o:dboperation.c
 $(CC) $(OBJFLAGS) $<
testdboperation.o:testdboperation.c
 $(CC) $(OBJFLAGS) $<
clean:
 rm dboperation.o
 rm testdboperation.o
 rm db
 
下面我们学习Makefile是如何编写的. 
在Makefile中也#开始的行都是注释行.Makefile中最重要的是描述文件的依赖关系的说明.一般的格式是: 
target: components
TAB rule

第一行表示的是依赖关系.第二行是规则. 
比如Makefile文件
main:main.o mytool1.o mytool2.o 
表示我们的目标(target)main的依赖对象(components)是main.o mytool1.o mytool2.o 当倚赖的对象在目标修改后修改的话,就要去执行规则一行所指定的命令.就象我们的上面那个Makefile第三行所说的一样要执行 gcc -o main main.o mytool1.o mytool2.o 注意规则一行中的TAB表示那里是一个TAB键 
Makefile有三个非常有用的变量.分别是$@,$^,$<代表的意义分别是: 
$@--目标文件,$^--所有的依赖文件,$<--第一个依赖文件.
 
阅读(1212) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~