makefile有问题

时间:2014-10-14 23:47:32

标签: c linux makefile

我正在尝试编写一个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。我尝试了其他几种组合,但似乎都没有。我做错了什么?

2 个答案:

答案 0 :(得分:3)

Make为基本C文件内置了规则,因此您无需告诉它如何构建myftpserver.omyftpclient.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