This is my makefile:
all:ll
ll:ll.c
gcc -c -Wall -Werror -02 c.c ll.c -o ll $@ $<
clean :
\rm -fr ll
When I try to make clean
or make make
, I get this error:
:makefile:4: *** missing separator. Stop.
How can I fix it?
This is my makefile:
all:ll
ll:ll.c
gcc -c -Wall -Werror -02 c.c ll.c -o ll $@ $<
clean :
\rm -fr ll
When I try to make clean
or make make
, I get this error:
:makefile:4: *** missing separator. Stop.
How can I fix it?
Its pretty old question but still I would like say about one more option using
vi/vim
editor to visualize the tabs. If you havevi/vim
installed then open aMakefile
(e.g.vim Makefile
) and enter:set list
. This will show number of tabs inserted as below,If you are using mcedit for makefile edit. you have to see the following mark.
You should always write command after a "tab" and not white space.
This applies to "gcc" line (line #4) in your case. You need to insert tab before gcc.
Also replace \rm -fr ll with "rm -fr ll". Insert tabs before this command too
The key point was "HARD TAB" 1. Check whether you used TAB instead of whitespace 2. Check your .vimrc for "set tabstop=X"
This is because tab is replaced by spaces. To disable this feature go to
gedit->edit->preferences->editor
and remove check for
"replace tab with space"
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 :
hope this helps !!