日期:2014-05-16  浏览次数:20947 次

makefile
分析以下的makefile文件,并回答以下问题。
CC = gcc 
OPTIONS = -x04 –o
OBJECTS = main.o input.o compute.o 
SOURCES = main.c input.c compute.c 
HEADERS = main.h input.c compute.h 
#问题一:以上部分有什么意义 
power:main.c $(OBJECTS)
$(CC) $(OPTIONS) power $(OBJECTS) –lm
#问题二:上一句命令有什么意义
main.o:main.c $(HEADERS)
input.o:input.c input.h 
compute.o:compute.c compute.h 
all.tar:$(SOUCES) $(HEADERS) makefile 
tar -cvf $(SOURCES) $(headers) makefile > all.tar
#问题三:上一句命令有什么意义
clean:
rm *.o 
#问题四:如何通过make执行clean的操作(命令格式)

------解决方案--------------------
分析以下的makefile文件,并回答以下问题。
CC = gcc  
OPTIONS = -x04 –o
OBJECTS = main.o input.o compute.o  
SOURCES = main.c input.c compute.c  
HEADERS = main.h input.c compute.h  
#问题一:以上部分有什么意义

上面这些就是一些变量赋值,意义在于看起来简洁明了,以后修改起来也方便,所谓的模块化在这里有点体现。  
power:main.c $(OBJECTS)
$(CC) $(OPTIONS) power $(OBJECTS) –lm
#问题二:上一句命令有什么意义

这句本身就是要编译出结果了,意义与上面的类似,就是使用到了变量,以后的修改会简单很多,看起来也比较清晰。
main.o:main.c $(HEADERS)
input.o:input.c input.h  
compute.o:compute.c compute.h  
all.tar:$(SOUCES) $(HEADERS) makefile  
tar -cvf $(SOURCES) $(headers) makefile > all.tar
#问题三:上一句命令有什么意义

这么多意义,这几句的意义在于对每个小模块都单独生成了.o文件,这样如果一个文件改变时,只会重新编译这个文件对应的.o和重新链接主程序。  后面的all.tar这个目标是为了打包这个程序的源代码到all.tar,方便备份源代码。
clean:
rm *.o  
#问题四:如何通过make执行clean的操作(命令格式)

make clean


这个是作业?  意义这么多的作业。。。。