我已经开始这本书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