《Unix 网络编程1: 套接字联网(第3版)》源码编译

注:该书官网为Unix网络编程,源码下载地址为源码

1. 编译过程如下

$ tar -xzvf unpv13e.tar.gz // 解压文件夹
$ cd unpv13e
$ ./configure // 配置


$ cd lib 
$ make

$ cd ../libfree
$ make // 在该步出错,解决方法往下看

$ cd ../libroute
$ make  //这一步可能会出错,可以直接忽略,表示自己的系统不支持 4.4BSD,并不影响对该书的学习

$ cd ../libgai
$ make 

:在编译libfree时可能出错如下:

gcc -I../lib -g -O2 -D_REENTRANT -Wall -c -o in_cksum.o in_cksum.c

gcc -I../lib -g -O2 -D_REENTRANT -Wall -c -o inet_ntop.o inet_ntop.c

inet_ntop.c: In function ‘inet_ntop’:

inet_ntop.c:61: error: argument ‘size’ doesn’t match prototype

/usr/include/arpa/inet.h:65: error: prototype declaration

make: *** [inet_ntop.o] Error 1

解决方法:libfree/inet_ntop.c第61行 size_t size 改成 socklen_t size,重新编译即可

2.拷贝静态链接库

$ cd ..   //进入unpv13e 目录 
$ cp libunp.a /usr/lib 
$ cp libunp.a /usr/lib64 

3.将unp.h文件和config.h文件拷贝至系统目录

$ vim lib/unp.h  //将 unp.h 中#include "../config.h"修改为#include "config.h" 

$ cp lib/unp.h /usr/include 

$ cp config.h /usr/include 

4.编译本书例子

注:需要加上静态链接库-lunp (-l参数加上libunp.a去掉lib.a之后的组合)

$ cd ./intro 
$ gcc daytimetcpcli.c -o daytimetcpcli -lunp 

编译可能会出错:

connect error:Connection refused

解决方法:开启xinetd 服务

$ cd /etc/xinetd.d/

$ vim daytime-dgram //将其中的disable=yes改为disable=no 

$ vim daytime-stream //将其中的disable=yes改为disable=no

$ service xinetd restart

再次在执行,成功:

$ ./daytimetcpcli 127.0.0.1
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值