2017-10-09 8 views
-4

私は教師と全体の配置がとても悪いCクラスで課題を持っています。私たちはmakefileについて何も教えていませんでしたが、現在はmd5の実装をコンパイルして使用することになっていますが、その方法を教えたことはありません。私はmakefileについて多くのことを読んだことがありますが、私はまだこれを働かせることはできません。メークファイルの問題

私は、次のファイルがあります。この

  • md5.c
  • md5.h
  • md5_example.c
  • md5_test.c
  • print_md5.c

を私のメイクファイルです:

CC=gcc 
CFLAGS = -g -O0 

1: md5_example.o 
$(CC) -o md5_example $(CFLAGS) md5_example.o 

2: md5.o 
    $(CC) -o md5 $(CFLAGS) md5.o 

3: md5_test.o 
    $(CC) -o md5_test $(CFLAGS) md5_test.o 

4: print_md5.o 
    $(CC) -o print_md5 $(CFLAGS) print_md5.o 

clean: 
    rm -f *.o md5 md5_example md5_test print_md5 

私は取得していますエラーは次のとおりです。

md5_example.c:2:17: fatal error: md5.h: No such file or directory 

は、誰かが私が私が一緒にこれらのファイルをコンパイルする方法を考え出し助けてくださいことはできますか?

+3

同じディレクトリにmd5.hとmd5_example.cていますか?このディレクトリにあるmakefileも同じですか?あなたはそこに行って走っていますか? – itdoesntwork

+1

Makefileに '1:'、 '2:'などと言っていることを説明してください。これまでのところ、makefileに 'X:Y'を使用することを理解していないようです。 – Arkadiy

+0

生成されたファイルの名前と一致するターゲットの名前を指定する必要があります。つまり、 '1:md5_example.o'の代わりに' md5_example:md5_example.o'を使います。そして、あなたは[暗黙のルール](https://www.gnu.org/software/make/manual/html_node /Implicit-Rules.html);ほぼすべてのMakefileを自動的に処理することができます。 –

答えて

0

まあ、私は1を起動し、あなたの線で少し混乱している:など、私が見ることを期待する:

md5_example: md5_example.o 

さておき、あなたは(ビルトイン)暗黙の経由md5_example.cからmd5_example.oを作成していますそれは大丈夫です。問題はコンパイルにあります。 md5_example.cには、

#include "md5.h" 

が含まれていますか?依存関係としてmd5.h含まmd5_example.oのための明示的なエントリを持っている方が良いだろうしかし

#include <md5.h> 

。あなたは、単に書くことができます:

md5_example: md5_example.c md5.h 
    $(CC) -o md5_example $(CFLAGS) md5_example.c 
+0

私が示した結果を得るには、 'code'を4つのスペースでインデントする必要があることに注意してください。または、編集ボックスでそれを選択し、ボックスの上にある** '{}' **ボタンを使用してインデントします。 –

+0

最後の行コマンドでは、プログラムがリンクに 'md5.o'を必要とする可能性があります。 'md5_example.c'を明示的な依存関係として指定する必要もありません(ただし、makeは害を及ぼすことはありません)。これは、' make'が正しい依存関係を推論できるためです。 –

+0

を「md5.h」に変更しましたが、今すぐ取得します。 make gcc -o md5 -g -O0 md5.o /usr/lib/gcc/x86_64-linux-gnu/6/../../../x86_64-linux-gnu/Scrt1.o:機能中'_start ': (.text + 0x20):未定義の' main'への参照 – nazrodim

-1

テストに合格するための方法を、とに値する、あなたは間違って行くとどのようにそれを修正する

:-)エラーはかなり何それをあるされているところを学ぶことですあなたのCファイルにはmain()関数が含まれていません。

メイクファイルには多数のターゲットがあるようですが、実際にすべての.Cファイルをコンパイルしてリンクしたいのですか?以下のためのクイック検索配当金を支払うことができる「ヌーのチュートリアルが作る」...

ジョン

関連する問題