Как правило, make, даже с указанным -j
, будет пытаться построить зависимости слева направо. Таким образом, в вашем рабочем случае сначала начинается сборка engine
, а затем сборка car
. Если двигатель завершает сборку до того, как car
запустится, значит, все в порядке, в противном случае это не так.
В вашем случае, я представляю, что у вас есть четыре других процесса высокого уровня, которые строятся вместе с engine
, который заменяет выполнение car
, и, таким образом, engine
происходит с fini sh до car
при сборке с низкими значениями -j.
В любом случае, вам не хватает некоторые зависимости. Вам нужно либо:
car : a.o b.o
, если автомобиль зависит от этих двух. Если a.o
и b.o
являются побочными эффектами рецептов engine
, вы можете сделать
car : engine
Примечание: даже если ваш make-файл работал с низкими значениями -j
, Makefiles не должен принимайте порядок сборки слева направо и не делайте предположений о времени выполнения каких-либо рецептов - так что ваш make-файл действительно был поврежден с самого начала.