A opção -d
(depuração) mostra o que você precisa saber, por exemplo,
make -d |less
pois a saída parece ir para a saída padrão. Uma vez em less
, você pode pesquisar para cima / para baixo para os detalhes interessantes.
Você poderia usar grep
, mas perderá contexto :
make -d | grep whatever
Em alguns casos, ajuda a ver quais possibilidades make
já considerou (e o que regras carregou) para dar sentido à saída.
Por exemplo, ao rastreá-lo, você verá o efeito dessa linha:
$(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules
que executa outro no diretório $(KDIR)
. É aí que o módulo procdriver
é criado:
Must remake target '/home/pi/myRpi/procdriver.o'.
set -e; echo ' LD [M] /home/pi/myRpi/procdriver.o'; ld -EL -r -o /home/pi/myRpi/procdriver.o /home/pi/myRpi/gpioLib.o ; printf '%s\n' 'cmd_/home/pi/myRpi/procdriver.o := ld -EL -r -o /home/pi/myRpi/procdriver.o /home/pi/myRpi/gpioLib.o ' > /home/pi/myRpi/.procdriver.o.cmd
{ echo /home/pi/myRpi/procdriver.ko; echo /home/pi/myRpi/gpioLib.o; } > /home/pi/myRpi/.tmp_versions/procdriver.mod
Successfully remade target file '/home/pi/myRpi/procdriver.o'.
O exemplo no pastebin começa no meio do traço. Quando eu olhei um exemplo rápido, a seção anterior termina com isso:
Trying implicit prerequisite 'SCCS/s.procdriver.w'.
Trying pattern rule with stem 'procdriver'.
Rejecting impossible implicit prerequisite 'procdriver.w'.
No implicit rule found for 'procdriver.c'.
Finished prerequisites of target file 'procdriver.c'.
No need to remake target 'procdriver.c'.
Finished prerequisites of target file 'all'.
Must remake target 'all'.
Você tem um procdriver.c
em seu diretório ou (estude o traço) algum outro recurso ajuda o programa make
a descobrir que não era necessário. Em ambos os casos, ele não usa esse arquivo no rastreamento para a sub-make.
A propósito, essa opção de depuração não está em POSIX make , embora você esteja É improvável que encontre uma versão de make
sem o recurso. Por exemplo, SunOS 4 fez isso e Solaris continua a fornecê-lo.