Makefile问题

时间:2017-10-09 16:03:32

标签: c makefile

我在C班有一个任务,我们的老师和整个安排都很糟糕。我们还没有学过关于makefile的任何内容,现在我们应该编译并使用md5实现进行赋值,但我们从未被教过如何这样做。我已经阅读了很多关于makefile的内容,但我似乎仍然无法使这个工作。

我有以下文件:

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

这是我的makefile:

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

有人可以帮我弄清楚如何将这些文件一起编译?

2 个答案:

答案 0 :(得分:0)

好吧,我对您从第1行开始的行有点困惑:等等,我希望看到:

md5_example: md5_example.o

除此之外,您正在通过隐式(内置)规则从md5_example.o创建md5_example.c,这很好。问题在于汇编;你确定md5_example.c包含:

#include "md5.h"

而不是这个?

#include <md5.h>

但是,最好为md5_example.o添加一个明确的条目,其中包含md5.h作为依赖项。你可以简单地写:

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

答案 1 :(得分:-1)

通过测试并且值得的方法是了解你出错的地方以及如何解决它: - )

错误几乎就是它所说的:你的C文件不包含main()函数。

你的makefile看起来有很多可能的目标,你实际上是希望编译和链接所有的.C文件吗?快速搜索“gnu make tutorial”可以带来红利......

约翰