我在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都可以自動處理。 –