《UNIX网络编程 卷1:套接字联网API》第一个例子运行时环境搭建

redhat@redhat-virtual-machine:~/桌面/unpv13e$ ./configure    

redhat@redhat-virtual-machine:~/桌面/unpv13e$ cd ./lib
redhat@redhat-virtual-machine:~/桌面/unpv13e/lib$ make


redhat@redhat-virtual-machine:~/桌面/unpv13e$ cd ./libfree
redhat@redhat-virtual-machine:~/桌面/unpv13e/libfree$ make
//    如果报错如下,则需要在当前目录下打开inet_ntop.c文件
//    将第60行的size_t size修改为socklen_t size 然后保存
//    重新输入make后不报错即可

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: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,  
                    ^  
make: *** [inet_ntop.o] Error 1  


redhat@redhat-virtual-machine:~/桌面/unpv13e/libfree$ cd ../libgai
redhat@redhat-virtual-machine:~/桌面/unpv13e/libgai$ make
//    以下的warning不用理会
/usr/include/arpa/inet.h: In function ‘inet_ntop’:  
inet_ntop.c:152:23: warning: ‘best.len’ may be used uninitialized in this function [-Wmaybe-uninitialized]  
   if (best.base == -1 || cur.len > best.len)  
                       ^  
inet_ntop.c:123:28: note: ‘best.len’ was declared here  
  struct { int base, len; } best, cur;  
                            ^  
gcc -I../lib -g -O2 -D_REENTRANT -Wall   -c -o inet_pton.o inet_pton.c  
ar rv ../libunp.a in_cksum.o inet_ntop.o inet_pton.o  
a - in_cksum.o  
a - inet_ntop.o  
a - inet_pton.o  
ranlib ../libunp.a  

//    用root权限将以上编译生成的libunp.a 文件复制到/usr/lib目录中

redhat@redhat-virtual-machine:~/桌面/unpv13e/libgai$ cd ..
redhat@redhat-virtual-machine:~/桌面/unpv13e$ sudo cp libunp.a /usr/lib
[sudo] redhat 的密码: 

//    打开unp.h文件将其中的#include "../config.h" 改成 #include "config.h"
redhat@redhat-virtual-machine:~/桌面/unpv13e$ vim lib/unp.h 

//    进入intro目录编译客户端文件并用root权限运行
redhat@redhat-virtual-machine:~/桌面/unpv13e$ cd intro/
redhat@redhat-virtual-machine:~/桌面/unpv13e/intro$  make daytimetcpcli
redhat@redhat-virtual-machine:~/桌面/unpv13e/intro$  sudo ./daytimetcpcli 127.0.0.1
//    错误提示无法连接
connect error: Connection refused

//    我们先打开服务器
redhat@redhat-virtual-machine:~/桌面/unpv13e/intro$ make daytimetcpsrv
redhat@redhat-virtual-machine:~/桌面/unpv13e/intro$ sudo ./daytimetcpsrv

//    然后再打开另一个终端,在那里再运行客户端即可
redhat@redhat-virtual-machine:~/桌面/unpv13e/intro$ sudo ./daytimetcpcli 127.0.0.1
[sudo] redhat 的密码: 
Mon Dec 25 21:00:36 2017
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值