C高级 SHELL day5 (Makefile)

Makefile是一个用于自动化编译过程的工具,它基于文件的时间戳来决定哪些文件需要重新编译。当源文件被修改后,其时间戳更新,Makefile会重新编译这些文件。例如,objs目标包括11_SerSql.o和12_myfnc.o,它们依赖于对应的.c源文件和head.h头文件。q目标使用gcc编译器和-lsqlite3链接库进行编译。此外,还有一个clean目标用于清理生成的对象文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. Makefile是一个工程管理工具,本质上是一个文件,这个文件中存放的是代码编译的规则。
  2. Makefile会根据文件的时间戳来决定工程内的文件本次是否需要编译。
    1. 时间戳:修改文件后会更新时间戳。
    2. 若文件的时间戳修改了,则执行Makefile工程文件的时候会重新编译修改时间戳的文件
    3. 若文件的时间戳没有修改,则执行Makefile工程文件的时候不会重新编译未修改时间戳的文件
    4. 提升效率,没有修改的文件不会重新编译。
objs:=11_SerSql.o 12_myfnc.o
Target:=q

CFLAGS:=-c -o
CC:=gcc



q:$(objs) head.h 
	$(CC) $(objs) -lsqlite3 -o $(Target)

11_SerSql.o:11_SerSql.c
	@$(CC) 11_SerSql.c $(CFLAGS) 11_SerSql.o

12_myfnc.o:12_myfnc.c
	@$(CC) 12_myfnc.c $(CFLAGS) 12_myfnc.o


clean:
	rm $(objs)
#	rm 11_SerSql.o 12_myfnc.o

do:
	gcc ./21_tcpusr.c -o p




##两个版本



objs:=11_SerSql.o 12_myfnc.o
Target:=q

CFLAGS:=-c -o
CC:=gcc

LNKs:=-lsqlite3 -pthread

q:$(objs) head.h 
	$(CC) $^ $(LNKs) -o $@

%.o:%.c  #  %是统配符
	@$(CC) $< $(CFLAGS) $@

clean:
	rm $(objs)
#	rm 11_SerSql.o 12_myfnc.o

do:
	gcc ./21_tcpusr.c -o p





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值