请解释该Makefile文件每一行的含义,并论述输入make命令以及make clean命令后的执行结果: 5
一个文件夹中包括ctrl_main.c,tcp_server.c,tcp_server.h,udp_server.c,udp_server.h,translate.c,t...
一个文件夹中包括ctrl_main.c,tcp_server.c,tcp_server.h,udp_server.c,udp_server.h,translate.c,translate.h和Makefile,主函数main在ctrl_main.c中。请解释该Makefile文件每一行的含义,并论述输入make命令以及make clean命令后的执行结果:
MAIN =ctrl_main
OBJS= ctrl_main.o tcp_server.o udp_server.o translate.o
CC= gcc
CFLAGS= -Wall -O2
LIBSLINK= -lpthread
DEBUG_FLAG= -g
.SUFFIXES=.o .c
$(MAIN):${OBJS}
${CC}-o $@ $(CFLAGS) ${DEBUG_FLAG} ${OBJS} $(LIBSLINK)
.o: .c
$(CC) $(CFLAGS) -c $<
clean:
/bin/rm -f ctrl_main *.o 展开
MAIN =ctrl_main
OBJS= ctrl_main.o tcp_server.o udp_server.o translate.o
CC= gcc
CFLAGS= -Wall -O2
LIBSLINK= -lpthread
DEBUG_FLAG= -g
.SUFFIXES=.o .c
$(MAIN):${OBJS}
${CC}-o $@ $(CFLAGS) ${DEBUG_FLAG} ${OBJS} $(LIBSLINK)
.o: .c
$(CC) $(CFLAGS) -c $<
clean:
/bin/rm -f ctrl_main *.o 展开
- 你的回答被采纳后将获得:
- 系统奖励15(财富值+成长值)+难题奖励10(财富值+成长值)+提问者悬赏5(财富值+成长值)
展开全部
MAIN =cidp_main//变量定义, 最后的可执行文件
OBJS = cidp_main.ounion.o atm.o card.o//变量定义, 所有目标文件
CC = gcc//变量定义, 所用的编译器
CFLAGS =-Wall -O2//变量定义, 编译器参数, 打开所以警告和进行2级优化
LIBSLINK =-lpthread//变量定义, 编译器链接库参数
DEBUG_FLAG =-g//变量定义, 编译器调试信息参数
$(MAIN):${OBJS}//目标和依赖,编译可执行程序的规则
${CC} -o $@ $(CFLAGS) ${DEBUG_FLAG} ${OBJS} $(LIBSLINK) }//编译可执行程序的命令, $@为目标项
cidp_main.o: cidp_main.c//目标和依赖,编译目标文件的规则
$(CC) $(CFLAGS) -c $<//编译ctrl_main.o的命令, $<为依赖列表首项
tcp_server.o:tcp_server.c tcp_server.h//目标和依赖,编译目标文件的规则
$(CC) $(CFLAGS) -c $<//编译tcp_server.o的命令, $<为依赖列表首项
udp_server.o: udp_server.c udp_server.h//目标和依赖,编译目标文件的规则则
$(CC) $(CFLAGS) -c $<//编译udp_server.o的命令, $<为依赖列表首项
translate.o: translate.c translate.h//目标和依赖,编译目标文件的规则
$(CC) $(CFLAGS) -c $<//编译translate.o的命令, $<为依赖列表首项
clean://clean目标,清除编译结果命令make clean
/bin/rm -f ctrl_main *.o//make clean具体要执行的命令, 删除ctrl_main和所以目标文件
1. make命令执行后产生所有目标文件,并最后产生可执行文件ctrl_main
2. make clean命令执行后, 删除ctrl_main和所有目标文件
OBJS = cidp_main.ounion.o atm.o card.o//变量定义, 所有目标文件
CC = gcc//变量定义, 所用的编译器
CFLAGS =-Wall -O2//变量定义, 编译器参数, 打开所以警告和进行2级优化
LIBSLINK =-lpthread//变量定义, 编译器链接库参数
DEBUG_FLAG =-g//变量定义, 编译器调试信息参数
$(MAIN):${OBJS}//目标和依赖,编译可执行程序的规则
${CC} -o $@ $(CFLAGS) ${DEBUG_FLAG} ${OBJS} $(LIBSLINK) }//编译可执行程序的命令, $@为目标项
cidp_main.o: cidp_main.c//目标和依赖,编译目标文件的规则
$(CC) $(CFLAGS) -c $<//编译ctrl_main.o的命令, $<为依赖列表首项
tcp_server.o:tcp_server.c tcp_server.h//目标和依赖,编译目标文件的规则
$(CC) $(CFLAGS) -c $<//编译tcp_server.o的命令, $<为依赖列表首项
udp_server.o: udp_server.c udp_server.h//目标和依赖,编译目标文件的规则则
$(CC) $(CFLAGS) -c $<//编译udp_server.o的命令, $<为依赖列表首项
translate.o: translate.c translate.h//目标和依赖,编译目标文件的规则
$(CC) $(CFLAGS) -c $<//编译translate.o的命令, $<为依赖列表首项
clean://clean目标,清除编译结果命令make clean
/bin/rm -f ctrl_main *.o//make clean具体要执行的命令, 删除ctrl_main和所以目标文件
1. make命令执行后产生所有目标文件,并最后产生可执行文件ctrl_main
2. make clean命令执行后, 删除ctrl_main和所有目标文件
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
做friendarm项目的时候,发现一个文件夹里有两个makefile文件,一个makefile1和makefile,make先执行哪个?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
看不到makefile的内容。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询