Aqui está o meu Makefile simples:
#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
Esse makefile pode ser algo meio imaturo ou fraco. Mas minha real preocupação é com o processo que o alvo está sendo atingido. Antes de contar a pergunta real, vamos primeiro ver sua saída.
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
Minha pergunta é: isso é por causa da link
dependência run
ou por causa da link.o
menção na seção de comando de run
, make
o comando procura link.o
e novamente é por causa main.o
sum.o
das dependências dele link.o
procura por dependências de menção ou por causa main.o
sum.o
da seção de comando e o primeiro comando no destino main.o
é encontrados e sum.o
e link.o
respectivamente? É por causa do arquivo mencionado nas dependências ou menção do arquivo no comando?