操作系统:ubuntu 16.04
首先下载源代码:UNIX Network Programming Source Code
解压:tar -zxvf unpv13e.tar.gz
进入文件目录:cd unpv13e
按照README执行对应操作:
遇坑:
1、在进入libfree文件夹执行make时报错:
解决:打开inet_ntop.c 将第60行size_t 修改为 socklen_t
2、在进入libroute文件夹执行make时报错:
解决:下载if_dl.h 放到/usr/include/net/下
3、再执行make报错:
解决:打开 unproute.h 头文件 加上 #define RTAX_MAX 1024
4、再执行make报错:
原因:你的系统支持4.4BSD才需要编译....
5、在进入intro输入make daytimetcpcli 和./daytimetcpcli 127.0.0.1时不成功:
解决:
安装服务:sudo apt-get install xinetd
更改配置:sudo vi /etc/xinetd.d/daytime
将两个#disable yes 改为 disable no
重启服务:sudo service xinetd restart
6、编译文件测试时报错:
解决:
#将unpv13e文件夹下 libunp.a 文件复制到 /usr/lib下
sudo cp libunp.a /usr/lib/
#修改lib文件夹下unp.h文件第7行将 #include <../config.h> 改为 #include "config.h"
#再将unp.h移动到 /usr/include 下
sudo cp unp.h /usr/include/
#再将unpv13e文件夹下的 config.h 移动到 /usr/include/下
sudo cp config.h /usr/include/
7、再编译测试 gcc -g 4.c -o unph成功
4.c测试文件: