这是我的简单 Makefile:
#create an exe file
run: link
gcc link.o -o run
#sketch link.o
link.o: main.o sum.o
ld -r main.o sum.o -o link.o
#sketch main.o
main.o: main.c
gcc -c main.c -o main.o
#sketch sum.o
sum.o: sum.c
gcc -c sum.c -o sum.o
#make clean recipie
clean:
rm *.o
rm run
这个 makefile 可能有点不成熟或薄弱。但我真正关心的是目标被击中的过程。在讲述实际问题之前,让我们先看看它的输出。
gcc -c main.c -o main.o
gcc -c sum.c -o sum.o
ld -r main.o sum.o -o link.o
cc link.o -o link
gcc link.o -o run
我的问题是:这是因为link
依赖性run
还是因为link.o
在命令部分中提到,命令run
再次寻找它是因为它make
的依赖性寻找提及依赖性或者因为在命令部分然后目标中的第一个命令是分别遇到and和?是因为依赖项中提到的文件还是命令中提到的文件?link.o
main.o
sum.o
link.o
main.o
sum.o
main.o
sum.o
link.o