UNP环境配置

最近在学习《UNIX网络编程》,书上将经常使用的头文件都放在unp.h里,须要本身编译一下代码搭建环境。html

UNP环境配置过程


  1. 下载源码 http://www.unpbook.com/src.html
  2. 按照README的说明进行编译
$ ./configure
$ cd lib
$ make
$ cd ../libfree
$ make

此时,会在unpv13e文件夹下产生一个libunp.a的库文件编程

  1. 测试编译是否成功
$ cd ../intro    # build and test a basic client program
$ make daytimetcpcli
$ ./daytimetcpcli 127.0.0.1

成功以后会显示以下:bash

$ ./daytimetcpcli 127.0.0.1
02 MAY 2015 12:05:03 CST
  1. 将libunp.a放置到/usr/lib/与/usr/lib64/文件夹下,并修改环境变量。将config.h与unp.h放置到源码文件夹,修改unp.h中的../config.h为config.h.
  2. 开始练习
$ gcc daytimetcpcli.c -lunp

ps:碰到的问题


1. libfree编译错误

出现以下报错:网络

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

处理:
修改libfree文件夹下的inet_ntop.c第61行 size_t size ->改为 socklen_t sizetcp

2. daytimetcpcli出现connected refused错误

出现以下报错:学习

[root@localhost intro]# ./daytimetcpcli 127.0.0.1
connect error: Connection refused

处理:测试

  1. 安装xinetd
  2. 修改 /etc/xinetd.d/daytime文件中的disable yesdisable no
  3. 重启xinetd
$ /etc/xinetd.d/ restart
  1. 查看是否开启daytime
$ netstat -ant

开启daytime服务后,会有13这个端口ui

tcp        0      0 0.0.0.0:13              0.0.0.0:*               LISTEN

3. redefinition of ‘struct in_pktinfo’错误

出现以下报错:prototype

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: error: redefinition of ‘struct in_pktinfo’  
    make: *** [connect_nonb.o] 错误 1

处理:
结构in_pktinfo已经包含在标准头文件bits/in.h中了, 它又经过 netinet/in.h 在unp.h中被包括进来. 只要将 unp.h 中的结构定义comment out注释掉,而后从新编译libunp.arest

相关文章
相关标签/搜索