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

linux高级编程六Makefile

2016-08-03 19:06 155 查看
========================== Makefile ======================

1.GNU推出的一款软件

2.在project文件中,在命令行下输入make,操作系统会自动寻找当前目录的下的makefile,按照makefile规则去编译project下的相关文件

3.基本形式:
main:main.o fun1.o fun.o                                                            gcc main.o fun1.o fun.o -o main

  main.o:main.c

      gcc -c main.c -o main.o

  fun1.o:fun1.c

      gcc -c fun1.c -o fun1.o

  fun.o:fun.c

      gcc -c fun.c -o fun.o

4.makefile变量
OBJS = main.o add.o 
OBJ = main
CC = gcc
使用变量用$(OBJS)
$(OBJS)
$(CC)

5.自动变量
$@ 目标文件的完整名称
$< 第一个依赖文件的名称
$^ 所有的不重复的目标依赖文件,以空格隔开

方式一:

CC=gcc

CFLAGS=-O2 -Wall

OBJ=main

OBJS=main.o fun1.o fun.o

$(OBJ):$(OBJS)
$(CC) $(OBJS) -o $(OBJ)

main:main.o fun1.o fun.o
gcc main.o fun1.o fun.o -o main

main.o:main.c
gcc -c main.c -o main.o

fun1.o:fun1.c
gcc -c fun1.c -o fun1.o

fun.o:fun.c
gcc -c fun.c -o fun.o

.PHONY:

clean:
rm *.o main

方式二:

CC=gcc

CFLAGS=-O2 -Wall

OBJ=main

OBJS=main.o fun1.o fun.o

$(OBJ):$(OBJS)
$(CC) $(OBJS) -o $(OBJ)

main.o:main.c
$(CC) -c $< -o $@

fun1.o:fun1.c
$(CC) -c $< -o $@

fun.o:fun.c
$(CC) -c $< -o $@

.PHONY:

clean:
rm *.o main

方式三:

CC=gcc

CFLAGS=-O2 -Wall

OBJ=main

OBJS=main.o fun1.o fun.o

$(OBJ):$(OBJS)
$(CC) $(OBJS) -o $(OBJ)

%.o:%.c
$(CC) -c $^ -o $@
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: