2010-12-06 67 views
0
all: servidor 
servidor: servidor.o 
    gcc -lpthread -o servidor.o 
servidor.o: 
clean: 
    gcc -c servidor.c 
    rm -rf servidor.o 

問題:這個makefile消除了.c文件嗎?

一)是clean:線消除了servidor.c文件?

b)如何修改makefile以便編譯client.c程序並創建client.o

+0

如果這就是Makefile **真**看起來像,我不認爲它會工作。 – Pointy 2010-12-06 14:14:55

+0

第一次`gcc`調用肯定不能按原樣工作。它應該讀取`gcc -o servidor servidor.o -lpthread`。 – zwol 2010-12-06 21:14:59

回答

2

你的整個生成文件應該是這樣的:

LDLIBS=-lpthread 
servidor: servidor.o client.o 
clean: 
<TAB>rm -f *.o 
+0

假設gmake而不是例如AIX make。 – 2010-12-06 14:31:49

0

一)是乾淨的:線消除了 servidor.c文件?

號線

gcc -c servidor.c 

只是確保servidor.o跛腳的方式存在,並且隨後rm不會失敗。它應該是

clean: 
    -rm -rf servidor.o 

B)我如何修改Makefile也使其編譯一個client.c程序並創建一個client.o?

最簡單的方法是使用內置的規則。如果您在任何規則的先決條件中添加clientclient.o,它將自動從client.c構建。

(並添加-lpthreadLDLIBS,如果你需要它client.c

0

makefile中似乎很奇怪,我不告它是否能正常工作或沒有?但我認爲它更好,如下所示:

all: client 
client: client.o 
    gcc -lpthread -o client.o 
client.o: 
    gcc -c client.c 
clean: 
    rm -rf client.o