UNP学习第一步:unp.h的安装及第一个程序的运行
UNP学习第一步:unp.h的安装及第一个程序的运行
- unp.h的安装
- 源代码编译
- 静态库安装
- 运行第一个程序
- 启动daytime服务
unp.h的安装
源代码编译
- 在书籍网站(http://www.unpbook.com/src.html)上下载本书源码
- 解压到本地文件夹
tar -xzf unpv13e.tar.gz
- 进入解压后的文件夹,阅读
README
说明文件。根据说明文件的要求,按如下步骤完成配置。 - 运行
./configure
,用于分析本地环境,为代码进行正确配置 - 进入
lib
文件夹,运行make
,用于编译unp.h
对应的静态库 - 进入
libfree
文件夹,运行make
,继续编译基本运行库。
注:此时有可能会发生如下错误: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,<builtin>: recipe for target 'inet_ntop.o' failed make: *** [inet_ntop.o] Error 1
这是由于
unp.h
中的一个变量描述和inet_ntop.c
中的类型不一致引起的,因此只需要编辑inet_ntop.c
文件中的第60行,将类型size_t
改为socklen_t
即可。
解决错误后继续完成make
,可能会存在一些无关痛痒的warning,但能看到代码已经被编译到../libunp.a
中了。 - 在
README
中的第三和第四步分别适用于其他UNIX系统,Linux系统不需要执行这两步。 - 最后对编译出来的静态库进行测试:进入
intro
文件夹,运行make daytimetcpcli
,能得到可运行文件daytimetcpcli
。至此unp的运行库已经编译成功。
静态库安装
- 在
.\lib\unp.h
头文件中,将#include "../config.h"
改为#include "config.h"
,因为我们即将把这两个文件移动到同一路径下。 - 将
.\lib\unp.h
以及./config.h
两个文件复制到./usr/include
文件夹下。sudo cp config.h /usr/include sudo cp lib/unp.h /usr/include
- 将编译好的运行库(
libunp.a
)分别复制到usr/lib
和usr/lib32
文件夹下。sudo cp libunp.a /usr/lib sudo cp libunp.a /usr/lib32
- 测试安装是否正确:使用GCC编译本书第一个示例程序
intro/daytimetcpcli.c
gcc intro/daytimetcpcli.c -o daytimetcpcli -lunp
其中
-lunp
表示在链接时在默认路径中使用libunp.a
库。
此时会在当前文件夹下生成可执行文件daytimetcpcli
,表示已经正确配置本书需要的运行环境。 - 最后,运行第一个程序
./daytimetcpcli 127.0.0.1
不出意外会出现错误提示
connect error: Connection refused
,这是因为本地主机并未启用daytime服务。
运行第一个程序
启动daytime服务
- 输入
xinetd
,如果没有输出,则代表服务已经安装了,只是未启用,反之需要安装服务。sudo apt install xinetd
等待安装完成即可,但默认daytime服务是不会启用的,所以需要进一步配置。
- 使用管理员权限编辑
/etc/xinetd.d/daytime
文件,将第一个disable
项改为no
(注:第一个service代表tcp版本,后一个为udp版本,在这里我们只需要启用tcp版本的daytime服务即可),保存文件。 - 重新启动
xinetd
服务sudo /etc/init.d/xinetd restart
一般来说可以观察到
xinetd
服务的停止与启动。 - 回到最初的文件夹,运行上节编译好的
daytimetcpcli
程序,此时可以得到正确的时间。第一个程序运行成功。./daytimetcpcli 127.0.0.1
UNP学习第一步:unp.h的安装及第一个程序的运行相关推荐
- caffe windows 学习第一步:编译和安装(vs2012+win 64)
转载自:http://www.cnblogs.com/denny402/p/5041060.html 没有GPU,没有linux, 只好装caffe的windows版本了. 我的系统是win10(64 ...
- 【Java学习】JDK安装及第一个java程序
一直听说Java是C++的升级和优化,却一直没用过,今天来简单学习一下. JDK安装及第一个java程序 一.JDK安装 二.第一个java程序 三.系统环境变量配置 一.JDK安装 JDK(Java ...
- 2020车载凯立德懒人包下载_华为HarmonyOS App开发工具DevEco Studio下载安装及第一个HarmonyOS App实战教程...
2020年9月10日,华为开发者大会发布了鸿蒙(HarmonyOS)2.0.HarmonyOS是一套全场景操作系统.从理论上讲,HarmonyOS可以在任何平台上运行(包括但不限于PC.手机.平板电脑 ...
- 【操作系统】HarmonyOS App开发工具HUAWEI DevEco Studio下载安装及第一个HarmonyOS App实战教程
路标 DevEco Studio简介 DevEco Studio的下载安装 安装过程演示 开发第一个基于Java的TV App 微信公众号原文链接:点击查看 2020年9月10日,华为开发者大会发布了 ...
- 华为HarmonyOS App开发工具DevEco Studio下载安装及第一个HarmonyOS App实战教程
路标 DevEco Studio简介 DevEco Studio的下载安装 安装过程演示 开发第一个基于Java的TV App 微信公众号原文链接:点击查看 2020年9月10日,华为开发者大会发布了 ...
- Anaconda安装及第一个py程序
Conda安装及第一个py程序 安装Conda 下载安装 在Anaconda官网下载Anaconda 打开Conda安装程序 设置好安装目录(这个一定要记好,后边要用),比如我的目录就是 D:\Pro ...
- 问题解决“Windows Installer 程序包有问题,此安装需要的程序不能运行。请与您的支持人员或程序包开发商联系”
安装或者卸载软件时出现如下提示:Windows Installer 程序包有问题,此安装需要的程序不能运行.请与您的支持人员或程序包开发商联系 解决方法: 1.按Win+R打开运行,输入service ...
- python安装包_迈出Python学习第一步:Python开发环境的下载与安装
所谓"磨刀不误砍柴工"."工欲善其事,必先利其器",都在告诉我们一个道理:要做好一个事情,事先做好充分的准备工作是非常重要的.所以在我们正式学习用Python编 ...
- 深度学习第一步(anaconda、pytorch安装)
不讲太多序言,做个无趣的男孩子,上来就上干货 第一步:anaconda安装 1.首先下载anaconda 官网咱们就不说了,下载慢,还容易出问题 直接上国内好资源,在清华镜像源下载安装包 anacon ...
最新文章
- 从1.5k到18k, 一个程序员的5年成长之路(分享)
- SAP UI5 应用开发教程之五十四 - 如何将本地 SAP UI5 应用配置到本地 Fiori Launchpad 中的试读版
- pta通讯录排序用python实现,python实现将android手机通讯录vcf文件转化为csv
- “科学学”视角下的科研工作者行为研究
- (49)FPGA线性单驱动(wire型)
- 微信亿级用户异常检测框架的设计与实践
- JS面向对象,__proto__和prototype详解
- 混响运行于CPU或者DSP时的部分指标对比
- 润乾报表开源 BI 组件学习
- GitLab之创建项目组及项目
- 打印日历程序php,C++实现的一个打印日历程序
- mysql查询并计算单价_数据库实验:统计查询和组合查询图书(书号,书名,作者编号,价格,出版社编号) 作者(编号,姓名,电话)出版社(编号,出版...
- 彩信文件服务器,彩信服务器怎么设置
- Java知识点(三)
- IDEA 闪退,并在C盘生成文件java_error_in_idea_****.log
- 程序设计基础—什么是逻辑与、或、非关系?
- c++系统骨干研发进阶的道和术
- tampermonkey自动化学习(持续更新~)
- 20个专业H5(HTML5)动画工具推荐
- 【无标题】ssh登陆 提示 session ended very soon
热门文章
- 【有利可图网】PS教程:PS制作气泡黑板效果
- python数圈算法_Python实现随机爬山算法
- 李宗吾和王阳明:居中就是一种心法
- 3dmax模型复制卡,为什么?
- 浅谈棋牌游戏开发框架之架构
- PDF迅捷转换器html网址,如何把PDF转换成HTML?迅捷PDF转换器
- 一文掌握Python+tkinter键盘事件与鼠标事件处理
- vnc远程桌面,六款好用又免费的vnc远程桌面软件
- 使用AutoCAD创建管道并导出PCF文件
- web常用通用组件+Axure后台管理系统框架模板+大屏数据可视化元件库+智慧社区管理系统大屏+图表组件+表单组合+智慧数据看板+通用大屏图表原件库+电脑端常用组件