makefile$@ $^ $?

$@  表示目标文件
$^  表示所有的依赖文件
$<  表示第一个依赖文件
$?  表示比目标还要新的依赖文件列表

--------------------------------------

OBJS = ifconfig.o tftp_util.o ping.o
SRCS = $(OBJS:.o=.c)

PHONY += all
all : $(BUILT_IN_OBJ)

$(BUILT_IN_OBJ) : $(OBJS)
            $(LD) $(L DFLAGS) -r $^ -o $@

$(OBJS) : $(SRCS)
            $(CC) $(CFLAGS) -c $^

PHONY += clean
clean :
            @rm -vf *.o

.PHONY : $(PHONY)

$@ 代表目标 上例为$(BUILT_IN_OBJ)
$^ 代表所有的依赖对象 上例第一个$^为$(OBJS),即 ifconfig.o tftp_util.o ping.o,上例第二个$^为$(SRCS),即$(OBJS:.o=.c) (Makefile解释后为: ifconfig.c tftp_util.c ping.c)
$< 代表第一个 依赖对象 前面例子修改如下:
$(BUILT_IN_OBJ) : $(OBJS)
            $(LD) $(LDFLAGS) -r $< -o $@
则$<表示为ifconfig.o

猜你喜欢

转载自blog.csdn.net/iot_shun/article/details/80252927