我在C班有一个任务,我们的老师和整个安排都很糟糕。我们还没有学过关于makefile的任何内容,现在我们应该编译并使用md5实现进行赋值,但我们从未被教过如何这样做。我已经阅读了很多关于makefile的内容,但我似乎仍然无法使这个工作。
我有以下文件:
这是我的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
有人可以帮我弄清楚如何将这些文件一起编译?
答案 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”可以带来红利......
约翰