2012-04-10 9 views
23

Następujący plik Make skopiowany poniżej, otrzymuję brakujący błąd separatora. Nic nie wydaje się być nie tak z tabspace.Błąd w make makefile: 18: *** brakujący separator. Zatrzymaj

OBJS = driver.o snapshot.o 
SHOBJS = malloc.o mymemory.o 
CC = g++ 
DEBUG = -g 
CFLAGS = -Wall -c $(DEBUG) 
LFLAGS = -Wall $(DEBUG) 
Snapshot: $(OBJS) 
    $(CC) $(LFLAGS) $(OBJS) -o Snapshot 
driver.o: snapshot.h driver.cpp 
    $(CC) $(CFLAGS) driver.cpp 
snapshot.o: mymemory.h snapshot.h snapshot.cpp 
    $(CC) $(CFLAGS) snapshot.cpp 
libmymemory.so: $(SHOBJS) 
    gcc -shared -o libmymemory.so malloc.o mymemory.o 
malloc.o: malloc.c 
    gcc -fPIC -g -c -Wall malloc.c 
mymemory.o: mymemory.cpp 
gcc -fPIC -g -c -Wall mymemory.cpp 
clean: 
\rm *.o *~ Snapshot 

Odpowiedz

45

Linia 18 to gcc -fPIC -g -c -Wall mymemory.cpp. Make spodziewa się separatora, zwykle :. Nie wykrywa tego wiersza jako polecenia. Błędnie wpisałeś intencję: masz miejsca, w których powinieneś mieć zakładkę.

Dobrzy edytorzy podkreślają linie makefile, które zaczynają się spacjami, ale wyglądają tak, jakby zamiast tego zaczynały się od tabulacji.

+2

Wygląda na to, że problem dotyczył mojego gedit, ustawiłem Tab jako spacje. Stąd błąd. Dzięki!!! – subramanian

+4

Zostaw samego biednego edytora tekstu - problem polega na tym, że 'make' jest głupi: \ –

1

Nie wiem, czy to prawdziwe lub artefaktem wklejania kodu online, ale wcięcie w ciągu ostatnich dwóch komend w pliku wygląda to mniej niż poleceń nad nim. Dokładnie sprawdź swoje odstępy.

13

Widziałem ten komunikat o błędzie, gdy plik używał spacji zamiast znaków tabulacji na początku wiersza w pliku Makefile.

4

Zdarza się to najczęściej po skopiowaniu kodu z Internetu. Usuń wszystkie spacje z wciętych linii za pomocą klawisza Delete. A następnie naciśnij klawisz tabulacji, tylko raz na linię.

Zapisz i spróbuj ponownie uruchomić plik. Teraz powinno działać. To działało dla mnie.