给下列makefile文件作注释。

给下列makefile文件作注释。,第1张

(1-6) : INCLUDES 后面定义的是头文件搜索的目录列表,-I后面好像不用空格

(7-11) : 以上是对宏的定义,,以-D开头,其效果与文件中的#define等效,与#define不同之处在于其定义的宏是全局的,而#define定义的宏只在一个文件中有效。

(11-15) : 编译参数CFLAGS定义,+=的意思是在以前的基础上再加上现有的值。按照上面的意义最后CFLAGS应该是 - O -g -DMODEL= tune1 -DRT -DNUMST=2 -DTID01EQ = 1 -DNCSTATES = 0 -DMT = 0 -DHAVESTDIO-DEXT_MODE -DUSE_RTMODEL

16-17: 源文件定义

18 :目标文件是将源文件的.c换成.o,即如果SRCS件中有 tune1.c 则SRCS就会有tune1.o.

19: RM工具定义

20:编译器定义

21 链接器定义(这里应该写错了或者需要对链接参数做特殊的定义才能也将LD定义成gcc)

22.目标定义

23.所有的.o文件都对与其同名的.c文件进行编译

24 $(CC)代表gcc,-c代表只编译,-o表示输出的文件 $@代表目标文件(-o $@在这里代表被编译的.o) CFLAGS 和 INCLUDES 一个是编译选项一个是头文件目录 $<指的是 %.c

25-26.如果 $(OBJS)都存在,则声称tunel,其实就是链接,-lm 只的是链接以一个libm.a库文件

27-28 移除文件

综上,如果make clean 则会清除所有.o文件

make tunrl 或者 make all 都会生成tune1

#自己定义一些变量,方便使用和修改

EXEC = pipe              #执行文件

OBJS = pipe.o            #目标文件

HEADERS =                #头文件、源文件

CC = gcc                 #编译器

INC = -I.                #头文件目录

CFLAGS = ${INC} -g       #编译标志位

#变量定义完毕

#指定依赖关系:${OBJS}依赖${HEADERS},也就是pipe依赖xx

${OBJS}:${HEADERS}

    

#指定依赖:${EXEC}依赖${OBJS},也就是pipe依赖pipe.o

${EXEC}:${OBJS}

    #指定生成规则

    ${CC} ${CFLAGS} ${LDFLAGS} -o $@ ${OBJS}

#伪目标

.PHONY:clean,all

#用于清除文件

clean:

    #删除目标文件和执行文件

    -rm -f ${OBJS} ${EXEC}

#用于生成所有文件

all:${EXEC}

编译只需make all即可,清除make clean


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/7954627.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-11
下一篇2023-04-11

发表评论

登录后才能评论

评论列表(0条)

    保存