Makefile

1.1 gcc编译流程

(1)

预处理gcc -E test.c -o test.i (处理#开头的文件)

编译: gcc -S test.i -o test.s (生成汇编代码)

汇编: gcc -c test.s -o test.o (将汇编语言转换成机器代码)

链接: gcc test.o -o test(与其它的机器代码文件和库文件汇聚生成一个可执行文件)

 (2)gcc test.c -o test

1.2多文件编译:

将gcc的前三步合3为1:

gcc -c stu.c -o stu.o

gcc -c stu.c -o stu.o     

gcc -c io.c -o io.o

gcc-c sort.c -o sort.o

gcc -c sumscores.c -o sumscores.o

将.o文件汇聚成一个可执行文件

gcc stu.o io.o sort.o calPmaxAge.o swap.o -o test

1.3 Make工程管理器

make: 工程管理器

make:会在当前路径下找一个叫做Makefile的文件(注意:M大写或小写都可以)

Makefile命名规范

目标文件1: 依赖文件1

(Tab键) 依赖文件1是如何生成目标文件1的

目标文件2: 依赖文件2

(Tab键)  依赖文件2是如何生成目标文件2的

注意:

(1) 目标文件1和目标文件2没有联系时,默认执行目标文件1

(2) 一个Makefile中可以有多个目标文件

无联系

 

有联系

(3)在调用make时,需要指定我们要运行的目标是什么,如果没有执行,默认执行目标文件1

make test

案例:

注意: 在构建yyds先会构建test

clean:

 rm *.o

 

make clean

假目标:

clean清不掉

如何解决:

在clean前面加. PHONY(假的、伪造的)

.PHONY:clean

clean:

rm *.o

如何解决假目标:

 

 

在clean前面加上.PHONY

1.4变量

预定义变量

CC: c编译器名称,默认为cc

CFLAGS:c编译器的选项,无默认值

RM:文件删除默认名称,默认rm -rf(强制删除)

自定义变量:

OBJ和OBJS:一个用于存放可执行文件,一个用于存放所有的目标文件

自动变量:

$@:目标文件

$<:表示第一个依赖文件

$^:表示所有的依赖文件

变量定义的两种方式

(1)递归方式: VAR=var

注意:后面的值会影响前面的值

(2)简单方式:VAR:=var

 

1.5嵌套makefile

(1)创建文件夹

include(.h 头文件)  src(*.c 文件)  obj (*.o 文件)  bin(可执行文件)

(2) 编写总的Makefile,先书写自定义变量或预定义变量

 

 

(3) 编写src中的Makefile,将所有的.c文件编译成.o文件 将.o文件移动到.obj

(4)将所有的.o文件编译生成可执行文件,将可自行文件移动到bin目录下

(5) 编写中控的Makefile 先执行src中的Makefile在执行 obj中的Makefile

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值