Я создаю проект на 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». Вот как:
Измените «Кодирование» с «UTF-8» на «ANSI».
Я просто сталкиваюсь с той же проблемой при компиляции моего исходного кода с автоматически созданным файлом gcc makefile.
Наконец, я обнаружил, что он был вызван символами спецификации utf-8 в начале файла makefile. Эти символы не видны в некоторых текстовых редакторах.
поэтому попробуйте сохранить файл как utf-8 без спецификации.