Fout in make-commando makefile:18: *** ontbrekend scheidingsteken. Stop

Voor het volgende make-bestand dat hieronder is gekopieerd, krijg ik de foutmelding ‘missing separator’. Er lijkt niets mis te zijn met de tabruimte.

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

Antwoord 1, autoriteit 100%

Regel 18 is gcc -fPIC -g -c -Wall mymemory.cpp. Make verwacht een scheidingsteken, meestal :. Het detecteert deze regel niet als een commando. Je hebt de bedoeling verkeerd getypt: je hebt spaties waar je een tabblad zou moeten hebben.

Goede editors markeren makefile-regels die beginnen met spaties, maar het lijkt alsof ze in plaats daarvan met een tab zouden moeten beginnen.


Antwoord 2, autoriteit 35%

Ik heb deze foutmelding gezien wanneer een bestand spaties gebruikte in plaats van tabteken(s) aan het begin van een regel in de makefile.


Antwoord 3, autoriteit 7%

Dit gebeurt meestal als je de code van internet kopieert. Verwijder alle spaties uit de ingesprongen regels met behulp van de delete-toets. En druk vervolgens op de tab-toets, slechts één keer per regel.

Sla het op en probeer het bestand opnieuw uit te voeren. Het zou nu moeten werken. Dit werkte voor mij.


Antwoord 4, autoriteit 5%

Ik weet niet of het nauwkeurig of een artefact is van het plakken van de code online, maar de inkeping voor de laatste twee opdrachten in het bestand ziet eruit alsof het kleiner is dan de opdrachten erboven. Controleer uw afstand voorzichtig.

Other episodes