由于这两套书太过经典,而书中提供的代码又太过陈旧导致其平台在搭建过程中遇到很多问题,笔者在搭建时也遇到许多弯路,所以将我的经历整理出来给有需求的小伙伴作为这套书源代码的搭建参考,笔者所用的是香橙派H6卡片机,系统是armbian 内核sunxin64,我想他能在嵌入式的卡片电脑上被移植成功编译那么,pc平台按照此方法也不是问题,其中并没有涉及过多的移植问题就是单纯的make
一、Unix网络编程配置
更新config.sub和config.guess,用于解决其要编译配置的./configues文件陈旧而无法识别最新内核支持的报错
- 下载最新文件:
wget -O config.guess 'http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD'
wget -O config.sub 'http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD'
- 删掉unpv13e文件下的陈旧文件
rm -rf config.guess config.sub
- 移动并粘贴新的文件
mv /root/code/config.guess /root/code/unpv13e/config.guess
mv /root/code/config.sub /root/code/unpv13e/config.sub
- 源代码的下载和编译
源代码下载地址:http://www.unpbook.com/ , 下载下来得到unpv13e.tar.gz文件
- 编译步骤:
解压缩zxvf unpv13e.tar.gz
tar zxvf unpv13e.tar.gz
进入unpv13e文件夹中
cd ./unpv13e
./configure //如果权限不够可以chmod改权限
编译lib文件
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;
- 此时在libfree目录下,修改
vim inet_ntop.c //将第60行的 size_t size 改成 socklen_t size;
重新make即修复错误。
- 继续执行下面命令:
cd ../libgai
make
二、环境搭建
修改unp.h , 将#include “../config.h”修改为 #include “config.h”,如下:
cd .. //回到主目录
sudo vim lib/unp.h
继续,拷贝头文件到include
sudo cp config.h /usr/local/include
sudo cp lib/unp.h /usr/local/include
拷贝库文件
sudo cp libunp.a /usr/local/lib
到此,unix网络编程一书上的代码都可以编译了。