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

UNP环境配置过程


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

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

3. 测试编译是否成功

  1. $ cd ../intro # build and test a basic client program
  2. $ make daytimetcpcli
  3. $ ./daytimetcpcli 127.0.0.1

成功之后会显示如下:

  1. $ ./daytimetcpcli 127.0.0.1
  2. 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. 开始练习
  1. $ gcc daytimetcpcli.c -lunp

ps:碰到的问题


1. libfree编译错误

出现如下报错:

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

处理:

修改libfree文件夹下的inet_ntop.c第61行 size_t size ->改成 socklen_t size

2. daytimetcpcli出现connected refused错误

出现如下报错:

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

处理:

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

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

  1. tcp 0 0 0.0.0.0:13 0.0.0.0:* LISTEN

3. redefinition of \‘struct in_pktinfo\’错误

出现如下报错:

  1. gcc -g -O2 -D_REENTRANT -Wall -c -o connect_nonb.o connect_nonb.c
  2. In file included from connect_nonb.c:1:
  3. unp.h:114: error: redefinition of struct in_pktinfo
  4. make: *** [connect_nonb.o] 错误 1

处理:

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

UNP环境配置的更多相关文章

  1. apue 2ed 和 unp 3ed 环境配置

    网上虽然有很多配置攻略,但是依然会一头雾水,下面记录我的配置过程. OS. Ubuntu 10.04 LTS 5 首先下载APUE源代码(http://www.apuebook.com/src.tar ...

  2. uboot环境配置

    uboot环境配置 通过配置uboot让它在启动过程中从tftp获取内核和设备树,并从在加载内核之后把通过启动参数将"从nfs挂载根文件系统"传入内核.这个配置主要是通过uboot ...

  3. 史上最全Windows版本搭建安装React Native环境配置

    史上最全Windows版本搭建安装React Native环境配置 配置过React Native 环境的都知道,在Windows React Native环境配置有很多坑要跳,为了帮助新手快速无误的 ...

  4. Electron的环境配置

    原文地址http://huisky.com/blog/161218121551123 本文介绍了Electron的环境配置,包括Electron下载.nodejs下载安装.NPM+Bower安装配置. ...

  5. Python开发环境配置

    好久没有写博客了,自从6月份毕业后,进入一家做书法.字画文化宣传的互联网公司(www.manyiaby.com),这段时间一直在进行前端开发,对于后端的使用很少了,整天都是什么html.css.jav ...

  6. PHP_环境配置_python脚本_2017

    Apache配置 需要安装:VC2015 httpd-2.4.16-win32-VC14.zip VC14就是2015的环境. 又比如:php-5.6.12-Win32-VC11-x86 VC11就是 ...

  7. PHP环境配置

    PHP环境配置 1.Apache的安装 第一步: 1.    双击httpd-2.2.17-win32-x86-no_ssl.msi.出现 Windows 标准的软件安装欢迎界面,直接点“Next”继 ...

  8. Visual studio 通用开发环境配置:SDL,FFMPEG为例

    引言 每一个C++库的使用都是从开发环境的配置开始的,其实每个库的配置过程都是大同小异,总结下来有下面几个步骤: 下载库文件,这里假定是已经预先编译完成的. 配置库文件的包含目录(include)和库 ...

  9. windows 7下React Native环境配置

    React Native 是 Facebook 推出的一个用 Java 语言就能同时编写 ios,android,以及后台的一项技术,它可以做到实时热更新 .FaceBook 也号称这们技术是 “Le ...

随机推荐

  1. ORA-00257:archiver error解决办法

    出现ORA-00257错误(空间不足错误),通过查找资料,绝大部分说这是由于归档日志太多,占用了全部的硬盘剩余空间导致的,通过简单删除日志或加大存储空间就能够解决. (一).oralce 11g更改归 ...

  2. springMVC接受JSON异常

    在springMVC 使用@RequestBody接受Json总是报如下错误: HTTP Status 500 - Handler processing failed; nested exceptio ...

  3. 汗,Google又调整了编译工具(升级SDK先备份!!!)

    1./tools 下的apkbuilder消失了 方法一.用老版本ADT中的apkbuilder(apkbuilder.bat--windows) 方法二.重新生成build.xml文件 2.aapt ...

  4. Mosquitto搭建Android推送服务番外篇一:各种报错解决

    文章钢要: 目前笔者在开发搭建Mosquitto服务器,在此期间遇到很多实际问题,所以走了很多弯路,在这里写出来为大家提供一些帮助. 1.安装完成后启动Mosquitto报错 执行mosquitto客 ...

  5. plist文件里边如果最外层是字典的话,读出来是无序的。

    如题. 要想使字典有序的话,可以用数组来存放字典,然后读

  6. 【笔记】mysql两条数据的某个属性值互换

    update groupuser as g1 join groupuser as g2 on (g1.user_id=1 and g2.user_id = 2) or(g1.user_id = 2 a ...

  7. SQUID常用命令

    Squid日常维护过程中,常用的一些命令: 1,初始化你在 squid.conf 里配置的 cache 目录squid -z如果有错误提示,请检查你的 cache目录的权限.可以使用使用更改目录权限: ...

  8. MongoDB高可用集群配置的方案

    >>高可用集群的解决方案 高可用性即HA(High Availability)指的是通过尽量缩短因日常维护操作(计划)和突发的系统崩溃(非计划)所导致的停机时间,以提高系统和应用的可用性. ...

  9. C++ 系列:设计模式研究

    Copyright © 1900-2016, NORYES, All Rights Reserved. http://www.cnblogs.com/noryes/ 欢迎转载,请保留此版权声明. -- ...

  10. 【leetcode】Remove Duplicates from Sorted List

    题目简述 Given a sorted linked list, delete all duplicates such that each element appear only once. For ...