Je crée un projet sur c et quand je crée mon Makefile et que je tente de l'exécuter, cela me donne l'erreur
Makefile:1: *** missing separator. Stop.
Mon code makefile est:
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
Aussi, tout est correctement tabulé, je suppose.
C'est un problème d'onglets. Certains éditeurs de texte peuvent remplacer les tabulations par des espaces, assurez-vous d'utiliser un éditeur de texte approprié qui ne gâche rien. Ouvrez votre makefile dans vi ou tout autre éditeur rudimentaire, et réécrivez ce makefile.
Notez qu'après chaque règle cible, un seul onglet doit être placé au début de la ligne. Tout ce qui vient après que cet onglet est transféré au shell (il peut y avoir plus d'onglets, d'espaces et tout ce que vous voulez, mais gardez à l'esprit qu'il doit y avoir un onglet au début de la ligne).
pouvez-vous essayer de courir -
Perl -pi -e 's/^ */\t/' Makefile
(après avoir sauvegardé une sauvegarde bien sûr)
make est très sensible à la manière dont les règles et les objectifs sont mis en retrait. L'erreur que vous publiez est généralement provoquée par l'indentation de la règle d'une cible avec des espaces au lieu d'un seul onglet.
par exemple:
target:
do stuff
va erreur, mais
target:
<tab>do stuff
ne sera pas.
Vous utilisez probablement un éditeur de texte moderne qui comprend le standard Unicode. - Même si vous ouvrez un fichier ANSI dans ces éditeurs, ils seront généralement sauvegardés sous le format UTF-8 - ce qui est très compatible avec les versions antérieures, sauf que cela place deux octets "invisibles" au début du fichier. que d'autres programmes sauront quel format le texte est codé. - C’est pourquoi l’erreur est signalée à la ligne 1.
Si vous utilisez le Bloc-notes pour Windows, vous avez de la chance, car il existe une option pour remplacer ce comportement et enregistrer le fichier au format "ANSI". Voici comment:
Changez le "Codage" de "UTF-8" en "ANSI".
en fait, j’ai fait face à un problème similaire. Tout était correct, mais j’ai compris par la suite. J'ai utilisé g-edit pour indiquer la solution et cela a bien fonctionné
Je viens de rencontrer le même problème lorsque je complète mon code source avec gf makefile généré automatiquement.
J'ai finalement trouvé que c'était dû aux caractères utf-8 de la nomenclature au début du fichier makefile.
alors essayez de sauvegarder le fichier en tant que utf-8 sans nomenclature.