配置UNP编程环境

Posted vennchan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了配置UNP编程环境相关的知识,希望对你有一定的参考价值。

今天开始学习Unix Network Programing这本书

第一步就是把UNP的编程环境搭建起来,试着跑通1.2的例程。

 

系统:Ubuntu 18.04

gcc版本:7.3

UNP的源码在此处下载:http://www.unpbook.com/src.html

下载以后进行解压,阅读Readme,按步骤执行:

1、./configure    # try to figure out all implementation differences

  configure是一个脚本文件,主要作用是:Guess values for system-dependent variables and create Makefiles.这是为了保证源码的可移植性。

2、cd lib

  make

  生成静态链接库

 

3、libroute中的内容,仅当系统支持4.4BSD的时候需要,跳过。

4、libxti中的内容,仅当系统支持XTI的时候需要。我搜索了一下XTI,仅仅在Oracle的编程指南中找到了相关内容:

TLI 是在 1986 年随 AT&T System V Release 3 引入的。TLI 当时提供了一个传输层接口 API。ISO 传输服务定义提供了 TLI 所基于的模型。现在,TLI 提供了 OSI 传输层和会话层之间的 API。TLI 接口在 UNIX 的 AT&T System V Release 4 版本中得到了进一步发展,并在 SunOS 5.6 操作系统接口中也可用。

XTI 接口由 TLI 接口演变而来,代表该系列接口的未来方向。使用 XTI 接口与使用 TLI 接口的应用程序相兼容,因此无需立即将 TLI 应用程序移植到 XTI。新应用程序可以使用 XTI 接口,而且可以在必要时将较旧的应用程序移植到 XTI。

但是我解压出来的东西里没有xti文件夹,并且这个东西是面向SunOS的,于是作罢。

 

5、编译运行daytimetcpcli程序,也就是1.2的例程,访问127.0.0.0,运行结果是connection refused,应该是我自己的主机没有打开对应的端口。

  访问206.168.112.96则长时间得不到响应,有可能是被墙了。

  这个问题我留到读完书上相关内容再解决。

 

待续。。。。。。

 

 

 

因为我之前项目经历少,对makefile还不熟悉,所以在学习的过程中,我尝试阅读每一个makefile,既有助于我学习这本书,也有助于学习makefile。
lib目录下的makefile内容很简单:

include ../Make.defines

all:   $LIB_OBJS
      ar rv $LIBUNP_NAME $?
      $RANLIB $LIBUNP_NAME

clean:
      rm -f $PROGS $CLEANFILES

主要的参数都被定义在了根目录的Make.defines里面。

LIB_OBJS是所有依赖文件。

 

ar命令:用来创建、修改库。

-r:如果指定的文件已经存在于库中,则替换它。因为指定的文件在库中占据它们替换的文件的同一个位置,位置标志没有任何附加的影响。当和 -u 标志(更新)一起使用时,-r 标志仅替换自从最后一次添加到库中以后修改的文件。

-v:  将建立新库的详细的逐个文件的描述写至标准输出。当和 -t 标志一起使用时,它给出类似于 ls -l 命令给出的长列表。当和 -x 标志一起使用时,它在每个文件前加一个名称。当和 -h 标志一起使用,它列出成员名称和更新的修改时间。

 

RANLIB被定义为ranlib

ranlib:对静态库的符号索引表进行更新。但是百度得知,目前ar -s即可完成同样操作。

 

LIBUP_NAME就是生成的静态链接库的名字。

 

 

参考:https://www.cnblogs.com/edver/p/7217167.html

https://www.jianshu.com/p/a0037f327b96

https://www.cnblogs.com/machao/p/5288462.html

https://docs.oracle.com/cd/E38902_01/html/E38880/tli-51305.html#scrolltoc

以上是关于配置UNP编程环境的主要内容,如果未能解决你的问题,请参考以下文章

Unix网络编程之环境搭建

UNIX网络编程配置unp.h和apueerror.h

UNP——第三章,套接字编程介绍

新人求解:OpenGL编程指南(第八版)的环境配置

python编程中在ubuntu中安装虚拟环境及环境配置

转载MapReduce编程 Intellij Idea配置MapReduce编程环境