step_4 以step_3为基础修改链接规则

以step_3为基础修改链接规则

  1. 修改后Makefile如下

     #step_3 改变默认规则
     
     #定义变量
     #cc=gcc
     #cflags=-i .
     #deps = hello_func.h
     
     #目标文件
     #hello_main:  hello_main.o hello_func.o
     #	$(cc) -o hello_main hello_main.o hello_func.o
     
     #*.o文件的生成规则
     #%.o: %.c $(deps)
     #	$(cc) -c -o $@ $< $(cflags)
     
     #伪目标
     #.phony: clean
     #clean:
     #	rm -f *.o hello_main
     
     
     #STEP_4 改变链接规则
     
     #定义变量
     TARGET = hello_main
     CC=gcc
     CFLAGS=-I .
     DEPS = hello_func.h
     OBJS = hello_main.o hello_func.o
     
     #目标文件
     $(TARGET) : $(OBJS)
     	$(CC) -o $@ $^ $(CFLAGS)
     
     #*.o文件的生成规则
     %.o: %.c $(DEPS)
     	$(CC) -c -o $@ $< $(CFLAGS)
     
     #伪目标
     .PHONY: clean
     clean:
     	rm -f *.o hello_main
    
  2. 解析

    • TARGET 变量,它的值为目标文件名 hello_main。

    • OBJS 变量,它的值为依赖的各个 o 文件,如 hello_main.o、 hello_func.o 文件。

    • 使用 对比TARGET 和 OBJS 变量替换原来固定的内容前后。

        #hello_main:  hello_main.o hello_func.o
        #	$(cc) -o hello_main hello_main.o hello_func.o
        $(TARGET) : $(OBJS)
        $(CC) -o $@ $^ $(CFLAGS)
      
    • 自动化变量“ @ ” 表 示 目 标 文 件 “ @”表示目标文件“ @(TARGET)”,使用自动化变量“ ” 表 示 所 有 的 依 赖 文 件 即 “ ^”表示所 有的依赖文件即“ (OBJS)”。

  3. 其他自动化变量

符号 意义
$@ 匹配目标文件
$% 与 $@ 类似,但 $% 仅匹配“库”类型的目标文件
$< 依赖中的第一个目标文件
$^ 所有的依赖目标,如果依赖中有重复的,只保留一份
$+ 所有的依赖目标,即使依赖中有重复的也原样保留
$? 所有比目标要新的依赖目标

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值