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

Я создаю проект на c, и когда я делаю свой Makefile и пытаюсь запустить его, он дает мне эту ошибку:

Makefile:1: *** missing separator. Stop. 

Мой код makefile:

 CC=gcc OBJ=./objetos INC=./include FON=./aqsFonte BIB=./bibliotecas OPBIB=-lBiblioteca ProjetoFinal: libFinal.a $(CP) $(FON)/ProjetoFinal.c -I$(INC) -L$(BIB) $(OPBIB) -o ProjetoFinal Bibliotecas.a: Caminho.o Libs_Defines.o Matrizes.o Proc_Imagens.o Vetores.o ar -q $(BIB)/libFinal.a Caminho.o ibs_Defines.o Matrizes.o Proc_Imagens.o Vetores.o Caminho.o: $(CP) $(FON)/Caminho.c -o Caminho.o Libs_Defines.o : $(CP) $(FON)/Libs_Defines.c -o Libs_Defines.o Matrizes.o: $(CP) $(FON)/Matrizes.c -o Matrizes.o Proc_Imagens.o: $(CP) $(FON)/Proc_Imagens.c -o Proc_Imagens.o Vetores.o: $(CP) $(FON)/Vetores.c -o Vetores.o , CC=gcc OBJ=./objetos INC=./include FON=./aqsFonte BIB=./bibliotecas OPBIB=-lBiblioteca ProjetoFinal: libFinal.a $(CP) $(FON)/ProjetoFinal.c -I$(INC) -L$(BIB) $(OPBIB) -o ProjetoFinal Bibliotecas.a: Caminho.o Libs_Defines.o Matrizes.o Proc_Imagens.o Vetores.o ar -q $(BIB)/libFinal.a Caminho.o ibs_Defines.o Matrizes.o Proc_Imagens.o Vetores.o Caminho.o: $(CP) $(FON)/Caminho.c -o Caminho.o Libs_Defines.o : $(CP) $(FON)/Libs_Defines.c -o Libs_Defines.o Matrizes.o: $(CP) $(FON)/Matrizes.c -o Matrizes.o Proc_Imagens.o: $(CP) $(FON)/Proc_Imagens.c -o Proc_Imagens.o Vetores.o: $(CP) $(FON)/Vetores.c -o Vetores.o 

Кроме того, это все правильно.

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

Обратите внимание, что после каждого целевого правила одна единственная вкладка должна быть помещена в начало строки. Все, что приходит после этой вкладки, передается оболочке (может быть больше вкладок, пробелов и всего, что вы хотите, но имейте в виду, что в начале строки должна быть вкладка).

вы можете попробовать запустить –

 perl -pi -e 's/^ */\t/' Makefile 

(после сохранения резервной копии, конечно)

make очень чувствителен к тому, что правила и цели отступы. Сообщение об ошибке, как правило, вызвано отступом правила цели с пробелами вместо одной вкладки.

например:

 target: do stuff 

будет ошибка, но

 target: do stuff 

не буду.

на самом деле я столкнулся с подобной проблемой, все было правильно, но позже я понял, что я использую g-edit, плохо скажу, что в редакторе edit> preferances> вкладка editor> снимите отметку с кнопки (вставьте пробелы вместо вкладок), и она отлично работала

Вероятно, вы используете современный текстовый редактор, который понимает стандарт Unicode. – Даже если вы откроете ANSI-файл в этих редакторах, они обычно сохраняют их обратно как UTF-8, что очень обратная совместимость, за исключением того, что он помещает два «невидимых» байта в начале файла, поэтому что другие программы будут знать, в каком формате кодируется текст. – Вот почему «ошибка» сообщается в строке 1.

Если вы используете Notepad для Windows, вам повезло, так как есть возможность переопределить это поведение и сохранить файл в формате «ANSI». Вот как:

  1. Файл -> Сохранить как
  2. Измените «Сохранить как тип» на «Все файлы».
  3. Найдите точное местоположение Makefile (иногда, сохраняйте, как ставит вас в другой каталог, я не знаю, почему это произошло, но это продолжалось со мной).
  4. Измените имя файла с «Makefile» на «Makefile». – важный период для трейлинга (без него он будет сохранен как «Makefile.txt», даже если выбрано «Все файлы»).
  5. Измените «Кодирование» с «UTF-8» на «ANSI».

    Сохранить с помощью кодировки ANSI

Я просто сталкиваюсь с той же проблемой при компиляции моего исходного кода с автоматически созданным файлом gcc makefile.

Наконец, я обнаружил, что он был вызван символами спецификации utf-8 в начале файла makefile. Эти символы не видны в некоторых текстовых редакторах.

поэтому попробуйте сохранить файл как utf-8 без спецификации.