Linux Kbuild: в чем разница между $ (sr c) и $ (obj) - PullRequest
1 голос
/ 22 марта 2020

В Documentation/kbuild/makefiles.txt главе 3.10 упоминается, что $(src) относится к расположению исходного кода, а $(obj) относится к расположению сгенерированных выходных файлов. Я запутался в этом при использовании другого выходного каталога.

В Makefile.build самое первое, что делается, это src := $(obj). Как это имеет смысл? Если я печатаю $(src) и $(obj), они всегда имеют одно и то же значение.

Однако, что меня еще больше смущает, так это то, что в этом случае make должна выдать ошибку. Если рабочий каталог находится за пределами исходного кода ядра (O=path/to/out/dir), при оценке правила $(obj)/%.o: $(src)/%.c он должен выполнить поиск исходного файла относительно выходного каталога. И поскольку исходный файл отсутствует, он должен потерпеть неудачу, говоря, что не может найти правило для $(src)/%.c target.

Может кто-нибудь объяснить, пожалуйста, что я здесь не так делаю?

...