我正在尝试写一个make文件:
1)只需input命令“make”,将文件myftpserver.c和myftpclient.c转换为myftpserver.o和myftpclient.o。
2)我还添加了一个“干净的”目标清理目录(删除所有的临时文件,目标文件和可执行文件)
3)使用gcc编译器。
我目前的版本不工作:
CC=gcc myftpserver: myftpserver.o $(CC) -o myftpserver.o myftpclient: myftpclient.o $(CC) -o myftpclient.o clean: ? // not sure what to put here
这是我第一次做makefile。 我试了几个其他的组合,但似乎没有工作。 我究竟做错了什么?
Make有基本的C文件内置的规则,所以你不需要告诉它如何构建myftpserver.o
或myftpclient.o
。 这个Makefile应该可以正常工作,并且正确地包含.PHONY
所以clean
规则不会在一个名为“clean”的文件中被禁用,
CC:=gcc .PHONY: clean all all: myftpserver myftpclient myftpserver: myftpserver.o myftpclient: myftpclient.o clean: rm -f *~ *.o myftpserver myftpclient
去测试:
$ make --dry-run gcc -c -o myftpserver.o myftpserver.c gcc myftpserver.o -o myftpserver gcc -c -o myftpclient.o myftpclient.c gcc myftpclient.o -o myftpclient
希望这可以帮助!
您需要编译您的.o文件的说明以及rm shell命令来清除:
CC=gcc myftpserver: myftpserver.o $(CC) -o myftpserver myftpserver.o myftpclient: myftpclient.o $(CC) -o myftpclient myftpclient.o myftpserver.o: myftpserver.c $(CC) myftpserver.c myftpclient.o: myftpclient.c $(CC) myftpclient.c clean: rm -f *~ *# *.o myftpserver myftpclient