我正在尝试编写一个make文件:
1)只需输入命令' make'即可将文件myftpserver.c和myftpclient.c转换为myftpserver.o和myftpclient.o。
2)我还添加了一个' clean'清理目录的目标(删除所有临时文件,目标文件和可执行文件)
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。我尝试了其他几种组合,但似乎都没有。我做错了什么?
答案 0 :(得分:3)
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
希望这有帮助!
答案 1 :(得分:0)
您需要有关编译.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