我已經開始這本書UNIX網絡編程2003以下。我已經從官方網站下載了源代碼:source code。這包括一個README文件,它告訴你如何構建/編譯本書包含的所有文件。
我在這個GitHub頁面(它也有源代碼)上按照這些說明github並設法使用make文件並從看起來成功配置源代碼。
生成文件編譯實施例中提供
程序的例子是,在目錄的第一章下面突出顯示。 我的程序是'[書] daytimetcpcli.c',並將其放在提供的Makefile中。 Makefile中的目標目錄裏面:
unpv13e/intro$
(包括所有其他的書範例程序)
include ../Make.defines
PROGS = [BOOK]daytimetcpcli.c daytimetcpcli1 daytimetcpcli2 daytimetcpcli3 \
daytimetcpsrv daytimetcpsrv1 daytimetcpsrv2 daytimetcpsrv3 \
daytimetcpcliv6 daytimetcpsrvv6 \
byteorder
all: ${PROGS}
[BOOK]daytimetcpcli: [BOOK]daytimetcpcli.o
${CC} ${CFLAGS} -o [email protected] [BOOK]daytimetcpcli.o ${LIBS}
daytimetcpcli1: daytimetcpcli1.o
${CC} ${CFLAGS} -o [email protected] daytimetcpcli1.o ${LIBS}
daytimetcpcli2: daytimetcpcli2.o
${CC} ${CFLAGS} -o [email protected] daytimetcpcli2.o ${LIBS}
daytimetcpcli3: daytimetcpcli3.o
${CC} ${CFLAGS} -o [email protected] daytimetcpcli3.o ${LIBS}
daytimetcpsrv: daytimetcpsrv.o
${CC} ${CFLAGS} -o [email protected] daytimetcpsrv.o ${LIBS}
daytimetcpsrv1: daytimetcpsrv1.o
${CC} ${CFLAGS} -o [email protected] daytimetcpsrv1.o ${LIBS}
daytimetcpsrv2: daytimetcpsrv2.o
${CC} ${CFLAGS} -o [email protected] daytimetcpsrv2.o ${LIBS}
daytimetcpsrv3: daytimetcpsrv3.o
${CC} ${CFLAGS} -o [email protected] daytimetcpsrv3.o ${LIBS}
daytimetcpcliv6: daytimetcpcliv6.o
${CC} ${CFLAGS} -o [email protected] daytimetcpcliv6.o ${LIBS}
daytimetcpsrvv6: daytimetcpsrvv6.o
${CC} ${CFLAGS} -o [email protected] daytimetcpsrvv6.o ${LIBS}
byteorder: byteorder.o
${CC} ${CFLAGS} -o [email protected] byteorder.o ${LIBS}
clean:
rm -f ${PROGS} ${CLEANFILES}
的問題
我把我的文件Makefile裏。但是當我再次運行'make'時。出現這種情況:
make: Nothing to be done for 'all'.
我也嘗試了正常的編譯與海灣合作委員會:
gcc [BOOK]daytimetcpcli.c
fatal error: unp.h: No such file or directory
所以我的問題是我怎麼編譯我的Makefile中程序提供的?我所做的是正確的?我知道我可以使用GCC進行編譯,但是我不知道包含GCC需要的頭文件的語法。這就是爲什麼我試圖用Makefile來做到這一點。
下面是我的第二個問題,如何在沒有makefile的情況下編譯? (使用gcc的正確-I 標題)? gcc program.c -I unp.h?
*注「[圖書] daytimetcpcli.c」中所提供的官方網站的源代碼= daytimetcpcli.c,在源。
當您直接編譯時,您顯然缺少頭文件。 Make.defines文件正在設置CFLAGS,因此它可以找到它。我對'[BOOK]'字符感到驚訝,方括號對於shell來說是特殊的。嘗試使用下劃線或完全刪除它們。 –
@icarus注意到並更正了謝謝,我不知道這一點。 – digitalXmage