main.o : factorial.h main.c
gcc -c main.c
factorial.o : factorial.c factorial.h
gcc -c factorial.c
all:main.o factorial.o
gcc -o test main.o factorial.o
clean:
rm -fr *.o test
只执行gcc -c main.c,生成main.o文件。不执行gcc -c factorial.c。
另外,如果将
factorial.o : factorial.c factorial.h
gcc -c factorial.c
放在文件的最前面,则只执行gcc -c factorial.c。
怎么回事,谢谢。编译没有错误。
你确定好依赖关系:
makefile不是按照顺序执行的,它只执行第一个目标和第一个目标所依赖的目标;
################################################
按照makefile的规则,编译总是默认第一个目标和目标依赖,那么
root#make # 按照楼主的文件,这样只会编译main.o
root#make all # 这样才会编译all,从而编译所有,如果楼主只想make,要将all放到最前边
root#make clean # 删除目标文件
all:main.o factorial.o
gcc -o test main.o factorial.o # jernymy 此处要用tab
main.o : factorial.h main.c
gcc -c main.c # jernymy 此处要用tab
factorial.o : factorial.c factorial.h
gcc -c factorial.c # jernymy 此处要用tab
clean:
rm -fr *.o test # jernymy 此处要用tab