${CC} ${CFLAGS} hw1cli.c -o hw1cli ${LIBS}
其中${CC}, ${CFLAGS}, 與 ${LIBS}的定義與所使用的 Unix 系統有關。
如果你已安裝成功 unpv13e, 則這些巨集的定義可在
unpv13e 目錄下的 Make.defines 檔案中找到。以 ubuntu 為例,
其 Make.defines 中有以下內容:
CC = gcc
CFLAGS = -I../lib -g -O2 -D_REENTRANT -Wall
LIBS = ../libunp.a -lpthread
故可知我們要用下列指令來編譯
gcc -I../lib -g -O2 -D_REENTRANT -Wall hw1cli.c -o hw1cli ../libunp.a -lpthread
在 SunOS 中, Make.defines 檔案內容可能如下:
CC = gcc
CFLAGS = -g -O2 -D_REENTRANT -Wall -D__EXTENSIONS__
LIBS = ../libunp.a -lresolv -lsocket -lnsl -lpthread
故要用下列指令來編譯
gcc -g -O2 -D_REENTRANT -Wall -D__EXTENSIONS__ hw1cli.c -o hw1cli ../libunp.a -lresolv -lsocket -lnsl -lpthread
hw1cli: hw1cli.o
${CC} ${CFLAGS} -o $@ hw1cli.o ${LIBS}
加入上述文字後將Makefile存檔,之後即可以用 make 指令編譯且連結出你的執行檔。如下面的執行範例
lhyen@lhyen-desktop:~/np/unpv13e/tcpcliserv$ make hw1cli gcc -I../lib -g -O2 -D_REENTRANT -Wall -c -o hw1cli.o hw1cli.c gcc -I../lib -g -O2 -D_REENTRANT -Wall -o hw1cli hw1cli.o ../libunp.a -lpthread上述藍色文字是在 Ubuntu 上執行時會出現的訊息,不同系統出現的訊息可能不同。編譯成功後此目錄中就有執行檔,檔名就是你C程式檔名去掉.c。在我們的例子中就是 hw1cli。
下面例子顯示的是修改在 tcpcliserv 目錄下的 Makefile, 使得之後可以用 make 編譯 hw2serv.c 這個程式。

