makefile简单实用

程序编译的执行过程

预处理 把.h .c文件展开形成一个文件
gcc -E first.c -o first.i
汇编 生成一个汇编文件
gcc -S first.i -o first.S
编译 生成一个.o文件
gcc -o first.S -o first.o
连接 将.o文件生成一个可执行文件
gcc first.o -o first

在当前目录下创建文件名为makefile的文件
最简单的makfile

first:first.o
        gcc -o first first.o
first.o:first.S
        gcc -o first.o -c first.S
first.S:first.i
        gcc -o first.S -S first.i
first.i:first.c
        gcc -o first.i -E first.c

添加伪目标
命令行中执行 make cleanall 或者 make clean

# 第一个文件是我的目标,很像递归
first:first.o
        gcc -o first first.o
first.o:first.S
        gcc -o first.o -c first.S
first.S:first.i
        gcc -o first.S -S first.i
first.i:first.c
        gcc -o first.i -E first.c

# 伪目标
.PHONY:
cleanall:
        rm -rf first.i first.S first.o first
clean:
        rm -rf first.i first.S first.o

添加变量

CC = gcc #替换
CC += -o #追加
RM := rm -rf #恒等于

first:first.o
        $(CC) first first.o
first.o:first.S
        $(CC) first.o -c first.S
first.S:first.i
        $(CC) first.S -S first.i
first.i:first.c
        $(CC) first.i -E first.c

# 伪目标
.PHONY:
cleanall:
        $(RM) first.i first.S first.o first
clean:
        $(RM) first.i first.S first.o

编译大量文件时使用
将当前目录下的first.c 、second.c、third.c文件编译
使用%
%.o :%.c 任意的.c编译为.o
使用*
.o :.c所有的.c编译为.o

$^为所有的依赖文件 $@为所有的目标文件
具体使用方法:

CC = gcc
# CC += gcc -o
CC += -o 
RM := rm -rf

all: first second third

%:%.c
        $(CC) $@ $^

# 伪目标
.PHONY:
cleanall:
        $(RM) first.i first.S first.o first
clean:
        $(RM) first.i first.S first.o
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值