UNIX网络编程之旅-配置unp.h头文件环境
2016-03-19 16:41
417 查看
最近在学习Unix网络编程(UNP),书中steven在处理网络编程时只用了一个#include “unp.h” 相当有个性并且也很便捷
于是我把第三版的源代码编译实现了这个过程,算是一种个性化的开发环境的搭建吧,顺便把过程记录下来,以便自己以后查阅。
首先去网上找到源代码包unpv.13e.tar.gz 一找一大堆
解压缩到你的某个目录,unpv13e里面大致有这些目录
├── aclocal.m4
├── advio
├── bcast
├── config.guess
├── config.h
├── config.h.in
├── config.log
├── config.status
├── config.sub
├── configure
├── configure.in
├── debug
├── DISCLAIMER
├── icmpd
├── inetd
├── install-sh
├── intro
├── ioctl
├── ipopts
├── key
├── lib
├── libfree
├── libgai
├── libroute
├── libunp.a(就是为了生成这个文件)
├── Make.defines
├── Make.defines.in
├── Makefile
├── Makefile.in
├── mcast
├── mysdr
├── names
├── nonblock
├── oob
├── ping
├── README
├── route
├── rtt
├── sctp
├── select
├── server
├── sigio
├── sock
├── sockopt
├── sparc64-unknown-freebsd5.1
├── ssntp
├── streams
├── tcpcliserv
├── test
├── threads
├── traceroute
├── udpcksum
├── udpcliserv
├── unixdomain
├── unpv13e
└── VERSION
首先查看README 一般情况下我们只需要进行第一步和第二步 其他的是一些与其他架构有关的情况不管
执行下面两部生成libunp.a
1. ./configure (在这之前先给configure文件赋予可执行权限 #chmod 755 configure)
2. cd lib
make (在lib上层目录中生成libunp.a)
生成libunp.a。复制这个静态库到/usr/lib/和/usr/lib64/中,因为后来编译程序的话需要用到这个静态库。还得在环境变量中将这两个路径加上。
接下来找到unp.h和config.h
1.我在我的主目录下新建了一个unp目录,专门处理unp的例子。
3.找到lib目录下的unp.h文件和上级目录中的config.h文件,拷贝到/usr/include中,为了以后include方便。
4.unp.h中将 #include "../config.h"改成#include "config.h"
在unp.h中需要添加一行:
#define MAX_LINE 2048
如果书写的程序出现err_sys()等err函数找不到的情况 这是因为steven大神对错误处理进行了封装 可以搜索apueerror.h这个文件(有兴趣的同学可以研究下封装代码 篇幅小不难的) 然后放入unp目录 接着在程序中 #include "apueerror.h"即可
至此环境搭建结束。
5.在每次编译源程序的时候,跟普通的编译不一样的是要在最后加上刚才那个链接库,-l参数加上刚才那个libunp.a去掉lib和后面的.a。最后得到参数 -lunp
gcc 123.c -o 123 -lunp
参考文章(包含apue编程环境搭建):
http://my.chinaunix.net/space.php?uid=11765716&do=blog&id=193676
于是我把第三版的源代码编译实现了这个过程,算是一种个性化的开发环境的搭建吧,顺便把过程记录下来,以便自己以后查阅。
首先去网上找到源代码包unpv.13e.tar.gz 一找一大堆
解压缩到你的某个目录,unpv13e里面大致有这些目录
├── aclocal.m4
├── advio
├── bcast
├── config.guess
├── config.h
├── config.h.in
├── config.log
├── config.status
├── config.sub
├── configure
├── configure.in
├── debug
├── DISCLAIMER
├── icmpd
├── inetd
├── install-sh
├── intro
├── ioctl
├── ipopts
├── key
├── lib
├── libfree
├── libgai
├── libroute
├── libunp.a(就是为了生成这个文件)
├── Make.defines
├── Make.defines.in
├── Makefile
├── Makefile.in
├── mcast
├── mysdr
├── names
├── nonblock
├── oob
├── ping
├── README
├── route
├── rtt
├── sctp
├── select
├── server
├── sigio
├── sock
├── sockopt
├── sparc64-unknown-freebsd5.1
├── ssntp
├── streams
├── tcpcliserv
├── test
├── threads
├── traceroute
├── udpcksum
├── udpcliserv
├── unixdomain
├── unpv13e
└── VERSION
首先查看README 一般情况下我们只需要进行第一步和第二步 其他的是一些与其他架构有关的情况不管
执行下面两部生成libunp.a
1. ./configure (在这之前先给configure文件赋予可执行权限 #chmod 755 configure)
2. cd lib
make (在lib上层目录中生成libunp.a)
生成libunp.a。复制这个静态库到/usr/lib/和/usr/lib64/中,因为后来编译程序的话需要用到这个静态库。还得在环境变量中将这两个路径加上。
接下来找到unp.h和config.h
1.我在我的主目录下新建了一个unp目录,专门处理unp的例子。
3.找到lib目录下的unp.h文件和上级目录中的config.h文件,拷贝到/usr/include中,为了以后include方便。
4.unp.h中将 #include "../config.h"改成#include "config.h"
在unp.h中需要添加一行:
#define MAX_LINE 2048
如果书写的程序出现err_sys()等err函数找不到的情况 这是因为steven大神对错误处理进行了封装 可以搜索apueerror.h这个文件(有兴趣的同学可以研究下封装代码 篇幅小不难的) 然后放入unp目录 接着在程序中 #include "apueerror.h"即可
至此环境搭建结束。
5.在每次编译源程序的时候,跟普通的编译不一样的是要在最后加上刚才那个链接库,-l参数加上刚才那个libunp.a去掉lib和后面的.a。最后得到参数 -lunp
gcc 123.c -o 123 -lunp
参考文章(包含apue编程环境搭建):
http://my.chinaunix.net/space.php?uid=11765716&do=blog&id=193676
相关文章推荐
- 一点关于卷积神经网络(CNN)的想法
- 如何简单形象又有趣地讲解神经网络是什么?知乎
- HTTP Header 详解
- Android网络编程使用HttpClient访问web站点
- Netty精粹之TCP粘包拆包问题
- 问题:XMLHttpRequest cannot load file~~Origin 'null' is therefore not allowed access
- TCP TIME_WAIT分析
- tcp拥塞控制
- Http原理实践 Go实现
- 计算机网络-TCP/IP协议相关知识点
- 教你如何读懂卷积神经网络(CNN)
- 什么是MAC寻址与IP寻址;路由器与交换机;集线器Hub;不同网络间的数据传输
- http://www.cnblogs.com/leiOOlei/p/5075402.html
- 大小端及网络字节序
- 关于网络
- 【转】使用Fiddler进行HTTP断点调试。
- 【转】VMware网络连接模式—桥接、NAT以及仅主机模式的详细介绍和区别
- 适配Http协议网络请求
- Andrew Ng机器学习笔记+Weka相关算法实现(三)神经网络和参数含义
- Linux网络性能评估工具iperf