(转载)编译UNP源码

本文来自和另一篇博客转载

再三声明,本文转载于另一篇博客 《编译UNP源码》,这里附上原文地址 https://blog.csdn.net/yao5hed/article/details/81055577
由于本人通过该博客成功编译了 UNP 源码,非常的想要将这篇博客转载出来给更多人看到,于是就有了这篇博客。
希望大家可以到原博客上给作者点个赞,谢谢大家:)

正文

读UNP需要用到官方的源码,记录一下折腾的记录。源码下载地址 http://www.unpbook.com

下载源码后,解压出文件夹 unpv13e,cd进入后,依次进行下面操作。

./configure

cd lib
make

这两步没有问题,出现warning也不用管,然后是:

cd ../libfree
make

这里报错:

inet_ntop.c: In function ‘inet_ntop’:
inet_ntop.c:60:9: error: argument ‘size’ doesn’t match prototype
  size_t size;

解决方法是把 size_t 改为 socklen_t,然后编译通过。
本来是要编译 libroute,但Linux不支持这个BSD的API,所以不处理,进行下一步:

cd ../libgai   
make 

将生成的 libunp.a 静态库复制到 /usr/lib//usr/lib64/ :

 cd ..   //回到 unpv13e 目录   
sudo cp libunp.a /usr/lib   
sudo cp libunp.a /usr/lib64 

修改 unp.h 并将其和 config.h 拷贝到 /usr/include 中:

vim lib/unp.h //将 unp.h#include "../config.h"修改为#include "config.h"   
sudo cp lib/unp.h /usr/include   
sudo cp config.h /usr/include   

编译书中的例子。注意:编译时必须加上静态链接库:-l 参数加上 libunp.a 去掉lib和后面的.a。最后得到参数 -lunp

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

测试上面生成的可执行文件获取本机当前日期:

./daytimetcpcli 127.0.0.1  

会出现以下错误:

connect error:Connection refused  

解决:这需要先启动server,用上面同样的方法编译daytimetcpsrv.c生成daytimetcpsrv,然后开另一个终端,以管理员启动:

sudo ./daytimetcpsrv

再到另一个终端启动daytimetcpcli,运行正常,结果:

参考:
Github:UNP-V3
unp.h 和源码编译问题
UNP环境搭建

猜你喜欢

转载自blog.csdn.net/u012814856/article/details/81903852
今日推荐