make -j2
говорит make, что он может запускать две команды оболочки одновременно.Make определяет, может ли он делать это из вашего make-файла, так что вам лучше написать свои make-файлы правильно!
Рассмотрите этот несносный make-файл:
1.o: 1.c
gcc -c 1.c -o 1.o
2.o: 2.c
gcc -c 2.c -o 2.o
prog: 1.o 2.o
gcc 1.o 2.o -o prog
Если вы говорите make -j2 prog
, то сделайте умнорешает, что производство 1.o
полностью не зависит от 2.o
.Таким образом, он может запустить два компилятора одновременно без ошибок.Так оно и есть.Make ждет, пока оба этих компиляций завершатся, прежде чем объединить оба объектных файла в prog
на последнем шаге ссылки.
Невероятно умно, если вы правильно делаете свои make-файлы (если они нене работают под -jn
тогда они плохо плохо плохо!).