我在C班有一个任务,我们的老师和整个安排非常糟糕。我们还没有教过任何关于makefile的知识,现在我们应该编译和使用md5实现来完成这个任务,但是我们从未学过如何去做。我已经阅读了关于makefile的很多内容,但我似乎仍然无法使这一个工作。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
有人可以帮我想出如何我可以编译这些文件一起?
是否md5.h和md5_example.c在同一个目录?这个目录中的makefile也是?你在那里跑步吗? – itdoesntwork
请解释一下你的想法'1:','2:'等等在你的Makefile中的含义。到目前为止,您似乎不了解在makefile中使用'X:Y'。 – Arkadiy
您应该为与生成的文件名称匹配的目标指定名称。也就是说,使用'md5_example:md5_example.o'而不是'1:md5_example.o'等。然后你应该在[隐式规则](https://www.gnu.org/software/make/manual/html_node /Implicit-Rules.html);几乎整个Makefile都可以自动处理。 –