您的位置:首页 > 运维架构 > Linux

Study Linux- Makefile编写

2013-07-15 20:48 127 查看
1. 基本概念

Makefile文件描述了整个工程的编译,链接等规则。

格式:

targets(目标) :prerequisites(依赖)

command(命令)

例: main.o : main.c

gcc -c main.c

在Makefile中,规则的顺序很重要,Makefile中只应该有一个最终目标,其它的目标都是被这个目标所连带出来的。Makefile中第一条规则中的目标将被确立为最终目标。

make命令默认在当前目录下寻找名字为makefile或者Makefile的工程文件,当名字不为这两者之一时,可以使用如下方法指定:
make -f 文件名

2. 伪目标

Makefile中把那些没有任何依赖只有执行动作的目标称为“伪目标”。

例如:

clean:

rm -f hello main.o func1.o func2.o

3. 变量

在makefile中,存在系统默认的自动变量

$^ :代表所有的依赖项文件
$@:代表目标
$< :达标第一个依赖文件

例1:

hello:main.o func1.o func2.o

gcc main.o fun.o func2.o -o hello

=》

hello: main.o func1.o func2.o

gcc $^ -o $@

例2:

OBJS= main.o fun.o

CC=gcc

CFLAGS=-c

main:$(OBJS)

$(CC)
$(OBJS) -o
main

main,o: main.c fun.h

$(CC)
$(CFLAGS) main.c
-o main.o

fun.o: fun.c fun.h

$(CC)
$(CFLAGS) fun.c 
-o fun.o

clean:

rm -f
main *.o

例3:

OBJS= main.o fun.o

CC=gcc

CFLAGS=-c

main: $(OBJS)
$(CC)
$^ -o $@

main.o: main.c fun.h

$(CC)
$(CFLAGS) $<
-o $@

fun.o: fun.c fun.h

$(CC)
$(CFLAGS) $<
-o $@

clean:

rm -f
main *.o
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Linux Makefile