unpv 卷一卷二源码编译错误解决

来源:互联网 发布:SCI-E数据库 编辑:程序博客网 时间:2024/05/01 09:05

下载:

卷一:http://www.kohala.com/start/unpv12e/unpv12e.tar.gz

http://www.kohala.com/start/


卷一 解决错误:

#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




卷二 解决错误:

cat README


1、按照Readme操作,进入lib目录下make报错:

gcc -g -O2 -D_REENTRANT -Wall -D_POSIX_PTHREAD_SEMANTICS   -c -o daemon_inetd.o daemon_inetd.c

In file included from /usr/include/netinet/in.h:24,

                 from /usr/include/rpc/types.h:90,

                 from /usr/include/rpc/rpc.h:38,

                 from unpipc.h:115,

                 from daemon_inetd.c:1:

/usr/include/stdint.h:49: error: duplicate ‘unsigned’

/usr/include/stdint.h:49: error: two or more data types in declaration specifiers

/usr/include/stdint.h:50: error: duplicate ‘unsigned’

/usr/include/stdint.h:50: error: duplicate ‘short’

/usr/include/stdint.h:52: error: duplicate ‘unsigned’

/usr/include/stdint.h:52: error: two or more data types in declaration specifiers

make: *** [daemon_inetd.o] 错误 1

 

修改config.h 注释掉一下三行:

 

//#define uint8_t unsigned char               /* <sys/types.h> */

//#define uint16_t unsigned short             /* <sys/types.h> */

//#define uint32_t unsigned int               /* <sys/types.h> */

生成 libunpipc.a 是关
0 0