Rahul Reddy Rahul Reddy - 4 months ago 35
C Question

makefile:4: *** missing separator. Stop

This is my makefile:


gcc -c -Wall -Werror -02 c.c ll.c -o ll $@ $<

clean :
\rm -fr ll

When I try to
make clean
make make
, I get this error:

:makefile:4: *** missing separator. Stop.

How can I fix it?

n13 n13

makefile has a very stupid relation with tabs , all actions of every rule are identified by tabs ...... and No 4 spaces dont make a tab , only a tab makes a tab...

to check i use the command cat -e -t -v makefile_name

it shows the presence of tabs with ^I and line endings with $ both are vital to ensure that dependencies end properly and tabs mark the action for the rules so that they are easily identifiable to the make utility.....

example :

Kaizen ~/so_test $ cat -e -t -v  mk.t
all:ll$      ## here the $ is end of line ...                   
ll:ll.c   $
^Igcc  -c  -Wall -Werror -02 c.c ll.c  -o  ll  $@  $<$ 
## the ^I above means a tab was there before the action part, so this lines ok .
clean :$
   \rm -fr ll$
## see here there is no ^I which means , tab is not present .... 
## in this case you need to open the file again and edit/ensure a tab 
## starts the action part

hope this helps !!