Chinaunix首页 | 论坛 | 博客
  • 博客访问: 782465
  • 博文数量: 230
  • 博客积分: 6330
  • 博客等级: 准将
  • 技术积分: 2188
  • 用 户 组: 普通用户
  • 注册时间: 2009-07-10 15:55
个人简介

脚踏实地

文章分类

全部博文(230)

文章存档

2017年(1)

2016年(7)

2015年(10)

2014年(32)

2013年(24)

2012年(33)

2011年(50)

2010年(30)

2009年(43)

分类: LINUX

2010-01-07 11:03:10

1.APUE2源代码下载:
2.我保存到了/root下.解压缩:tar -xzvf src.tar.gz 【在windows下用7zip等工具会解压出空文件,必须用linux】
3.cd apue.2e进入apue.2e目录,查看README,告诉我们linux系统只要修改Make.defines.linux再make
4.vi Make.defines.linux 修改WKDIR=/root/apue.2e 就是说工作目录为WKDIR=/root/apue.2e
5.修改/root/apue.2e/std/linux.mk把全部的nawk改为awk.因些linux默认没有nawk
6.make
一个需要注意的地方:(自己)
至于 err_sys等出错函数的处理,为了方便,也搞进了apue.h中,这样以后只需要一个较大的apue.h就可以了,注意为了处理如fig16.14这样的有

extern int connect_retry(int, const struct sockaddr *, socklen_t);
此函数在fig16.9中,但此文件也包含apue.h;所以进行  gcc  fig16.14.c fig16.9.c
出现了 err_*系列函数重复定义的问题,所以就把apue.h中err_*系列函数的声明和定义都标记了关键字static。
加强版的apue.h见下方,下载后替换即可:

文件:apue.h.zip
大小:2KB
下载:下载


关于extern例子的几点体会:
编译的时候(gcc -c)不会出问题,问题出现在链接阶段,虽然apue.h有
#ifndef 来避免多重包含,但它在
gcc  fig16.14.c fig16.9.c(只有fig16.14.c中有main函数)时这两个文件的时候是并列的,避免多重包含只是对在编译其中一个文件的时候,它的头文件中防止多次包含apue.h。


以后对于文件fig2.1变成fig2.1.c的问题通过下面的文章解决:
http://blog.chinaunix.net/u3/100698/showart.php?id=2053626


UNP的设置:
 

阅读(2476) | 评论(0) | 转发(0) |
0

上一篇:vim杂记

下一篇:BSD Socket 简易入门手册

给主人留下些什么吧!~~