Когда make выполняет рецепты правила, он передает его в оболочку.Итак, чтобы использовать qemu-system-arm
, оболочка должна знать, где ее найти.Это зависит от того, какая оболочка использует (sh
, bash
, другое?) И какой файл конфигурации эта оболочка читает при запуске (~/.profile
, ~/.bashrc
, другое?).
Выможно исследовать с помощью простого правила теста в вашем make-файле:
$ cat Makefile
...
.PHONY: test
test:
echo 'SHELL=$(SHELL)'
...
$ make test
SHELL=...
В вашем случае оболочка, вероятно, не является оболочкой Борна (sh
), потому что ~/.profile
читается sh
, поэтомунаверное работает.Таким образом, возможно, что оболочка, используемая make, является bash
: поскольку оболочка, созданная make, не является оболочкой входа в систему, она не читает ~/.profile
и ~/.bash_profile
.Вы должны добавить определение PATH
в свой ~/.bashrc
:
echo 'export PATH=$PATH:/path/to/qemu-system-arm' >> ~/.bashrc
Или, если вы не хотите изменять все процессы bash, вы можете добавить это определение в свой Makefile (переменные среды становятся makeпеременные в контексте make):
$ cat Makefile
PATH := $(PATH):/path/to/qemu-system-arm
...
Обратите внимание, что вы также можете принудительно заставить make использовать нужную оболочку (но учтите, что это отрицательно влияет на переносимость вашего make-файла):
SHELL := /usr/local/bin/my-preferred-shell