UNIX环境高级编程中的apue.h错误
2013-08-07 10:01
246 查看
正在拜读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”
这下就全部该搞定了!
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”
这下就全部该搞定了!
相关文章推荐
- UNIX环境高级编程中的apue.h错误
- UNIX环境高级编程中的apue.h错误
- UNIX环境高级编程第二版中编译程序提示“apue.h:找不到这个文件或目录”错误
- 【转载】UNIX环境高级编程中的apue.h错误
- UNIX环境高级编程中的apue.h错误
- apue<<UNIX环境高级编程>>翻译错误罗列
- UNIX环境高级编程中的apue.h错误
- UNIX环境高级编程__针对apue.h找不到的情况以及log错误信息输出的问题
- UNIX环境高级编程中的apue.h错误
- 【转载】UNIX环境高级编程中的apue.h错误
- UNIX环境高级编程中的apue.h错误解决办法
- UNIX环境高级编程--#include "apue.h"
- APUE(UNIX环境高级编程)程序架构编译分析(Makefile)
- UNIX环境高级编程 apue.h头文件的配置
- (九) 一起学 Unix 环境高级编程 (APUE) 之 线程
- apue.h(unix环境高级编程
- unix环境高级编程书中实例缺少apue.h头文件解决方法
- Unix 环境高级编程第三版 配置 apue.h
- (十二) 一起学 Unix 环境高级编程 (APUE) 之 进程间通信(IPC)
- apue.h头文件(UNIX环境高级编程)