Без hello.i
, что для меня неясно, что должно быть, ваш файл make должен выглядеть следующим образом:
all: hello hello.s
hello: hello.c hello.o
gcc hello.o -o hello
hello.o: hello.c
gcc -c hello.c -o hello.o
hello.s: hello.c
gcc -S hello.c -o hello.s
clean:
rm -rf *.o
У вас проблема в том, что в Makefile после точки с запятой вы должны указатьзависимости (файлы, которые должны быть созданы для текущего вывода).
В вашем случае all
заявляет, что hello
и hello.s
обязательны для заполнения.Затем make
ищет, чтобы произвести их, используя данные команды.Hello
объявляет, что hello.o
требуется, поэтому он также ищет данную команду для ее создания.
hello.o
и hello.o
объявляют, что hello.c
требуется, поэтому make
проверитесли он находит файл и при да, он запускает команду gcc
.Теперь, когда hello.o
произведен, он вернется к выдаче hello
.
Команды должны иметь отступы с правильными вкладками, поэтому, если вы копируете вставку, убедитесь, что у вас есть вкладки и нет нескольких пробелов.