Unix Network Programming 2nd Edtion Source Code 编译问题解决

来源:互联网 发布:rpm卸载软件 编辑:程序博客网 时间:2024/05/16 05:08
按照README的指示走

#cd unpv12e
#cd lib
#make
gcc -g -O2 -D_REENTRANT -Wall -c -o connect_nonb.o connect_nonb.c
In file included from connect_nonb.c:1:
unp.h:114: redefinition of `struct in_pktinfo'
make: *** [connect_nonb.o] Error 1
这个错误的修正方法是注释掉该定义(从网上搜索来的,也不知道正确不正确,反正能通过)

cd ../libfree
make
inet_ntop.c:61: error: argument 'size' doesn't match prototype
/usr/include/arpa/inet.h:153: error: prototype declaration

inet_ntop.c第61行 size_t size ->改成 socklen_t size


#cd ../intro
#make
...
/root/unpv12e/intro/daytimetcpsrvv6.c:18: undefined reference to `ipv6addr_any'
daytimetcpsrvv6.o(.text+0x3d):/root/unpv12e/intro/daytimetcpsrvv6.c:18: undefined reference to `ipv6addr_any'
daytimetcpsrvv6.o(.text+0x48):/root/unpv12e/intro/daytimetcpsrvv6.c:18: undefined reference to `ipv6addr_any'
daytimetcpsrvv6.o(.text+0x56):/root/unpv12e/intro/daytimetcpsrvv6.c:18: undefined reference to `ipv6addr_any
collect2: ld returned 1 exit status
make: *** [daytimetcpsrvv6] Error
将daytimetcpsrvv6.c:18的语句extern struct in6_addr ipv6addr_any;
改为struct in6_addr ipv6addr_any;

#./daytimetcpsrv &
#./daytimetcpcli 127.0.0.1
得到输出时间应该就表示安装初步成功了。

------------------------------------------

建议在执行server和client时加上port number
加入port number的修改 :  
tcpservselect.c
加入 -> int SERVER_PORT = (u_short)atoi(argv[1]);
修改 -> servaddr.sin_port = htons(SERVER_PORT);
SERVER_PORT变量名称可以自取
执行时加入port
./tcpservselect01 9999

tcpcli01.c
加入 -> int SERVER_PORT = (u_short)atoi(argv[2]);
修改 -> if (argc != 3)
err_quit("usage: tcpcli <IPaddress> <Port>");
servaddr.sin_port = htons(SERVER_PORT);
SERVER_PORT变量名称可以自取
执行时加入port
./tcpcli01 140.113.235.131 9999
原创粉丝点击