2

学校のプロジェクト用に作成しているmakefileに問題があります。CファイルとSPARCアセンブリファイルを(それぞれ)コンパイルしてアセンブルし、それらをリンクしています。私はUnix環境で働いています。これがmakefileです:

proj09.exe: proj09.driver.o proj09.support.o
<tab>gcc -Wall proj09.driver.o proj09.support.o -o proj09.exe

proj09.driver.o: proj09.driver.c /user/cse320/Projects/project09.support.h
<tab>gcc -Wall -c proj09.driver.c /user/cse320/Projects/project09.support.h

proj09.support.o: proj09.support.s
<tab>gcc -Wall proj09.support.s 

ただし、作成しようとすると、リーダーエラーが発生します。具体的には次のとおりです。

「リーダーの致命的なエラー:proj09.makefile、2行目:予期しない行末が表示されました」

これは通常、何かが正しくフォーマットされていないことを意味することがわかりましたが、この場合はどうなるかわかりません。また、これがmakefileの正しいコードであるかどうかは100%わかりません(具体的には、support.sファイルのアセンブルと両方のファイルのリンク)。これが繰り返しの質問である場合はお詫び申し上げます。事前にアーカイブを調べましたが、何も役に立ちませんでした。どんな助けでも大歓迎です!

編集:なぜこれが違いを生むのかわかりませんが、geditを使用して実際にコードを記述し、リンクのためにファイルをSSHに転送しています。

4

2 に答える 2

2

Joachimが言ったように、行はスペースではなくタブでインデントする必要があるため、2行目は次のようになります。

[TAB]gcc -Wall proj09.driver.o proj09.support.o -o proj09.exe[NEWLINE]

ここで、[TAB]はTAB文字を意味します。

また、コマンドの後にスペースを入れないでください。だから私は[NEWLINE]charを入れました。

于 2012-11-23T16:00:11.660 に答える
0

スペースとタブを除いて、これはオブジェクトファイルを生成せず、コンパイルさえすべきではありません(含まれていない限りmain()):

gcc -Wall proj09.support.s 

-cここでも使用する必要があります:

gcc -Wall -c proj09.support.s 

注: Unix/Linux で作業している場合は、.exe

于 2012-11-23T16:03:05.143 に答える