您的位置:首页 > 理论基础 > 计算机网络

unix网络编程第三版环境配置

2015-08-23 16:04 495 查看
根据unp3前沿部分的“如何使用本书”,决定先看本书的第二部分,即第3至11章,这部分偏实践。

当看到确定主机字节序的时候出现了一段程序:

#include    "unp.h"

int
main(int argc, char **argv)
{
union {
short  s;
char   c[sizeof(short)];
} un;

un.s = 0x0102;
printf("%s: ", CPU_VENDOR_OS);
if (sizeof(short) == 2) {
if (un.c[0] == 1 && un.c[1] == 2)
printf("big-endian\n");
else if (un.c[0] == 2 && un.c[1] == 1)
printf("little-endian\n");
else
printf("unknown\n");
} else
printf("sizeof(short) = %d\n", sizeof(short));

exit(0);
}


发现这里有个头文件“unp.h”头文件,这是unix netword programming的缩写,即作者将一些头文件整合在了unp.h中,就跟Unix环境高级编程中的apue.h类似。

于是先到网上下载了unp第三版的源码,解压,按照README开始编译。但到了lib下make时开始报错:net_ntop.c:61: error: argument ‘size’ doesn’t match prototype。从报错信息来看是类型不匹配。网速搜来搜,已经有人解决了,找到了个能解决我的问题的方案:

第一步:在终端中进入upnv13e目录,然后执行代码:
./configure

第二步:这里有问题及解决方法
cd lib
make(如果报如下错误:             inet_ntop.c:61: error: argument 'size' doesn't match prototype
/usr/include/arpa/inet.h:153: error: prototype declaration
inet_ntop.c第61行 size_t size ->改成 socklen_t size)
第三步:这一步没有问题
cd ../libfree
make

第四步:

cd ../libgai
make
cd ..   //回到unpv13e目录
然后拷贝生成的ku到系统库目录:
sudo cp libunp.a /usr/lib
sudo cp libunp.a /usr/lib32

第五步:修改unp.h并将其和config.h拷贝到/usr/include中,为了以后include方便
vim  lib/unp.h
sudo cp lib/unp.h /usr/include
sudo cp config.h /usr/include
以后编译代码的时候加上-lunp链接我们的库。(貌似只能用gcc,不能用g++)


原文链接如下:http://zhidao.baidu.com/link?url=QPOLizaHzEWU7lRfWQUjzGt0Q4g4739dfp8ZlhMovo78tjjNb3RPdmUrjYV-HJj0VYQ80AxbO-XLSJYRiyGD0DxyuM4lCHtp4qXyJdOnelm

配好环境后进intro目录make下,然后./byteorder运行成功!

注:我用的是ubuntu 12.04, 64位系统。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息