Наоборот: Makefile включает в себя шел. Грубо говоря это обертка над shell которая позволяет разбивать shell на блоки и указывать зависимости относительно разных блоков кода shell.
`gcc -c -o main.o main.c` - Эта команда ни как не относится к Makefile в чем конкретно вопрос?
И на сколько я помню, если просто вызвать make то выполнится Makefile из текущей директории, по этому пути и должны быть прописаны относительно текущей директории. Но есть возможность вызвать make указав где нужно искать Makefile но какие именно поведение будет тут я сказать не смогу =( никогда так не делал, надо смотреть.