1. ホーム
  2. c

[解決済み】makefile:4。*** missing separator. 停止する

2022-02-15 16:41:40

質問

これは私のmakefileです。

all:ll

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

clean :
  \rm -fr ll

を試したところ make clean または make make というエラーが表示されます。

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

どうすれば直るのでしょうか?

どのように解決するのですか?

makeはタブと非常に愚かな関係を持っています。 すべてのルールのすべてのアクションはタブで識別されます。そして、スペース4つでタブになることはありません。 タブを作るのはタブだけです。

確認するために、私はコマンド cat -e -t -v makefile_name .

でタブの存在を示しています。 ^I と改行が $ . どちらも、依存関係が適切に終了することを保証し、タブがルールのアクションをマークして、make ユーティリティが容易に識別できるようにするために不可欠です。

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 line is 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