Как узнать, какие файлы использует Makefile?

Замечу, что интересующий файл находится в папке внутри / home /self / bin, но это не имеет значения, верно?

Это имеет значение, $ PATH не рекурсивен.

Вы можете переместить файл. Или создать ссылку (жесткую или символическую). Вероятно, символическое значение будет менее запутанным:

Если файл существует в / home / user / bin / sub-dir / stp , выполните:

ln -s sub-dir/stp ~/bin/stp

Или добавьте новый подкаталог по пути

PATH=$HOME/bin/sub-dir:$PATH
2
04.12.2016, 02:26
1 ответ

Параметр -d (отладка) показывает то, что вам нужно знать, например

make -d |less

, поскольку вывод, похоже, идет на стандартный вывод. Попав в less , вы можете искать интересные детали вверх / вниз.

Вы могли бы использовать grep , но потеряете контекст :

make -d | grep whatever

В некоторых случаях это помогает увидеть, какие возможности делают уже рассмотрел (и какие правила он загрузил), чтобы понять смысл вывода.

Например, когда вы отслеживаете его, вы увидите эффект следующей строки:

$(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules 

, которая запускает другой make в каталоге $ (KDIR) . Здесь создается модуль procdriver :

  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'.

Пример для pastebin начинается с середины трассировки. Когда я взглянул на быстрый пример, предыдущий раздел заканчивается так:

    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'.

Либо у вас есть procdriver.c в вашем каталоге, либо (изучите трассировку) какая-то другая функция помогает сделать программа обнаружила, что в этом не было необходимости. В любом случае он не использует этот файл в трассировке для подделки.

Кстати, этой опции отладки нет в POSIX make , хотя вы вряд ли встретите версию make без этой функции. Например, SunOS 4 сделала это, а Solaris продолжает предоставлять это.

2
27.01.2020, 22:10

Теги

Похожие вопросы