Проблема с make-файлом - PullRequest
       1

Проблема с make-файлом

1 голос
/ 02 сентября 2010

hiii, я только начал изучать make-файлы и написал следующий для простого файла hello.c. это показывает некоторую ошибку, говорящую:

makefile1: 5: *** отсутствует разделитель. Стоп.

Что здесь не так ...?

 CC=gcc
    CFLAGS=-c -Wall

    hello: hello.c
    $(CC) $(CFLAGS) hello.c -o hello

    clean:
     rm -rf *.o

И, всегда ли лучше использовать make-файл или есть какие-то конкретные случаи, когда его не использовать ...?

Пожалуйста, поправьте меня, если я где-то ошибаюсь ...

Ответы [ 4 ]

2 голосов
/ 02 сентября 2010

Убедитесь, что вы не пропустили ни одной вкладки, прежде чем писать правило для создания цели:

CC=gcc
CFLAGS=-c -Wall

hello: hello.c
<TAB>$(CC) $(CFLAGS) hello.c -o hello

.PHONY: clean
clean:
<TAB>rm -rf *.o

Хорошо написать .PHONY.Вы можете найти причину здесь .

1 голос
/ 02 сентября 2010

Во-первых, ваши цели не должны иметь отступ. Во-вторых, убедитесь, что вы используете символы табуляции, а не пробелы для отступа.

CC=gcc
CFLAGS=-c -Wall
.PHONY: clean # There's no clean file.
hello: hello.c
    $(CC) $(CFLAGS) hello.c -o hello
clean:
    rm -rf *.o

Что касается вашего другого вопроса, make-файлы используются везде. Нравится вам это или нет, но научиться их поддерживать - хорошая идея. Лично мне нравится, как они волшебны. Они могут быть отличными экономителями времени. Они также могут быть ужасными временными затратами, если вам придется отлаживать сложные.

0 голосов
/ 22 марта 2014

Помимо проблем с отступами, вы должны удалить -c из CFLAGS, иначе созданный привет будет не исполняемым файлом, а файлом .o без правильного имени.

0 голосов
/ 02 сентября 2010

«Отсутствует разделитель» означает, что вы, вероятно, не использовали символ табуляции в строках CC или rm. Попробуйте переформатировать файл следующим образом

CC=gcc
CFLAGS=-c -Wall

hello: hello.c
<TAB>$(CC) $(CFLAGS) hello.c -o hello

clean:
<TAB>rm -rf *.o

Make придирчив в том, что все командные строки должны начинаться с символа табуляции. Не 4 пробела, не 8 пробелов, а фактическая вкладка (ASCII 0x09).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...