Замечу, что интересующий файл находится в папке внутри / home /self / bin, но это не имеет значения, верно?
Это имеет значение, $ PATH
не рекурсивен.
Вы можете переместить файл. Или создать ссылку (жесткую или символическую). Вероятно, символическое значение будет менее запутанным:
Если файл существует в / home / user / bin / sub-dir / stp
, выполните:
ln -s sub-dir/stp ~/bin/stp
Или добавьте новый подкаталог по пути
PATH=$HOME/bin/sub-dir:$PATH
Параметр -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 продолжает предоставлять это.