UNIX环境高级编程中的apue.h错误

正在拜读Richard Stevens的大作《UNIX环境高级编程》,当读到第一个编程实例时,就懵了!一个简短的程序,就是编译不通过!各种错误!上网找了一下,才知道原来是那个头文件apue.h在我的系统里面没有,那个文件其实是Richard他自己写的一个头文件,里面定义了一系列的常量与变量,还有他也写了error.cz这个文件,这个文件是他定义了很多错误处理函数的文件,如果这个文件系统找不到的话,像他的err_quit()等函数就无法使用!好了,不费话了,下面是我从网上搜寻来的数据,在我的系统上(CentOS 6.3)完成了配置:

先在这个网站 http://www.apuebook.com/src.tar.gz 下载tar.gz格式的源码包,然后解压至某个目录,比如说/home/godsoul/下,然后进入目录apue.2e,把文件 Make.defines.linux 中的 WKDIR=/home/xxx/apue.2e 修改为 WKDIR=/home/godsoul/apue.2e ,然后再进入apue.2e目录下的std目录,打开linux.mk,将里面的nawk全部替换为awk,如果是用的vi/vim编辑器,可以使用这个 命令  :1.$s/nawk/awk/g (注意前面有冒号)
然后在此目录下运行make命令,原本以为可以成功,结果报错:说是stropts.h找不到,原来这是glibc里面的头文件,所以接着,我们要安装glibc(一定要源码):

下载了glibc-2.17.tar.gz,解压后:(glibc下载:http://www.gnu.org/software/libc/)

cp ./glibc-2.17/streams/stropts.h /usr/include
cp ./glibc-2.17/bits/stropts.h /usr/include/bits
cp ./glibc-2.17/sysdeps/x86/bits/xtitypes.h /usr/include/bits(注:我系统是x86的,它里面有x86,x86_64,i386等,请与你的系统相配)

接下来再make一下,还是报错!(对,就是这么苦逼........)

这次报错说是ARG_MAX未定义,这是他定义的一个宏常量,我们要手动修改其大小:

在apue.2e/include/apue.h中添加一行:
#define ARG_MAX 4096

接着还要在关联文件中包含apue.h才行:

打开apue.2e/threadctl/getenv1.c和apue.2e/threadctl/getenv3.c,添加一行:
#include “apue.h”

改好后make clean再重新make,这次成功了!

这时你编译程序还是报错!说是err_quit等函数找不到,这是因为你的系统找不到定义此类函数的文件。这类函数在apue.2e/lib/error.c中定义,所以你要把这个文件拷贝到/usr/include 目录下,同时还要复制apue.2e/lib/libapue.a 到/usr/lib/和 /usr/lib64下。还有你要把 /home/godsoul/apue.2e/inlcude 目录下的 apue.h 文件也复制到/usr/include中去!

然后修改刚复制过来的apue.h文件:

在最后一行 #endif 前面添加一行 #include “error.c”

这下就全部该搞定了!



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值