2017-03-29 27 views
-1

それはエラーメッセージMakefileの生成エラー

mksh: Warning: newline is not last character in file makefile 
Current working directory /home/s/m/mel 
rm -f *.o core firstpass 
unix1% 

はここに私のメイクファイルで返す私はUNIX

unix1% make clean 

にコマンドを入力するたび:

firstpass: main.o hashFunct.o symbolTable.o opcodeTable.o 
     gcc main.o hashFunct.o symbolTable.o opcodeTable.o -o firstpass 

main.o: main.c 
     gcc -c main.c 

hashFunct.o: hashFunct.c 
     gcc -c hashFunct.c 

symbolTable.o: symbolTable.c 
     gcc -c symbolTable.c 

opcodeTable.o: opcodeTable.c 
     gcc -c opcodeTable.c 

clean: 
     rm -f *.o core firstpass 

私は理解していません問題は、私はemacsでそれを開き、不思議な文字を参照しようとしました。また、firstpassという単語はmakefileの最後の文字です。このエラーはどういう意味ですか?

答えて

4

mksh:警告:改行は、ファイルメイクファイルの最後の文字ではありません

問題は、それがファイルの最後の文字として改行を望んでいる、それは言ったまさにです。現在の最後の文字はsで、firstpassです。

エディタで開き、ファイルの最後に戻り、returnを押します。

編集者の中には、最終改行をファイルに追加するものがあります。

ファイルの末尾に改行を入れる必要はありません。この種の警告は、改行なしで入力が与えられた場合にパーサーが驚くかもしれない古いシステムでは一般的です。私が野生でこれを見たのはPerl 1だけです。これは1987年のことですが、Cコンパイラはこの警告を発行しています。

+0

FWIW、Cコンパイラは、国際標準によれば、Cプログラムのソースコードは改行で終わらなければならないため、このような警告を出します。それが合理的な要求かどうかは、Cや他の何かのために、別の質問です。 –

+0

@Schwernはい、ありがとう、それは働いた! – melb27

関連する問題