《Unix网络编程》第一卷第三版|《Unix网络编程》第一卷第三版 源码编译
【《Unix网络编程》第一卷第三版|《Unix网络编程》第一卷第三版 源码编译】操作系统:
操作系统: Ubuntu 16.04
- unpv13e/libfree目录下 make报错
inet_ntop.c:60:9: error: argument ‘size’ doesn’t match prototype
size_t size;
^
In file included from inet_ntop.c:27:0:
/usr/include/arpa/inet.h:64:20: error: prototype declaration
extern const char *inet_ntop (int __af, const void *__restrict __cp,
^
: recipe for target 'inet_ntop.o' failed
make: *** [inet_ntop.o] Error 1
错误提示inet_ntop.c中60行声明与原型申明/usr/include/arpa/inet.h不匹配。(#include一般所在文件都在/usr/include中)
经查验,最后一个参数,在inet.h中定义socklen_t,而inet_ntop.c中定义为size_t。在inet_ntop.c中加入如下代码即可:(插入到所有头文件之后)
#define size_t socklen_t
- unpv13e/libroute目录下 make
gcc -I../lib -g -O2 -D_REENTRANT -Wall-c -o get_rtaddrs.o get_rtaddrs.c
In file included from get_rtaddrs.c:1:0:
unproute.h:3:45: fatal error: net/if_dl.h: No such file or directory
compilation terminated.
解决方法: 下载if_dl.h 放到/usr/include/net/下
- 同2目录下,make报错
get_rtaddrs.c: In function ‘get_rtaddrs’:
get_rtaddrs.c:21:18: error: ‘RTAX_MAX’ undeclared (first use in this function)
for (i = 0;
i < RTAX_MAX;
i++) {
^
get_rtaddrs.c 中RTAX_MAX变量未声明,在/libroute/unproute.h 加 #define RTAX_MAX 1024
还会报其他错误,其实看到README,才知道基于BSD的系统才用编译这个。自己的系统是基于Linux的Ubuntu系统,所以不用编译这个。
解决以上问题以后,可以运行第一份代码,起一个响应服务器时间的server。
#intro/目录下 启动server
$ make daytimetcpsrv
$ sudo ./daytimetcpsrv
#另起一个terminal,启动client
$ ./daytimetcpcli 127.0.0.1
Fri Mar2 18:51:06 2018
推荐阅读
- 慢慢的美丽
- 《真与假的困惑》???|《真与假的困惑》??? ——致良知是一种伟大的力量
- 《跨界歌手》:亲情永远比爱情更有泪点
- 诗歌:|诗歌: 《让我们举起世界杯,干了!》
- 期刊|期刊 | 国内核心期刊之(北大核心)
- 《魔法科高中的劣等生》第26卷(Invasion篇)发售
- 人间词话的智慧
- 《一代诗人》37期,生活,江南j,拨动心潭的一泓秋水
- 广角叙述|广角叙述 展众生群像——试析鲁迅《示众》的展示艺术
- 书评——《小行星》