This is my makefile:
gcc -c -Wall -Werror -02 c.c ll.c -o ll $@ $<
\rm -fr ll
:makefile:4: *** missing separator. Stop.
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.....
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 !!