UNIX环境高级编程中的apue.h错误
2013-08-07 10:06:34 来源:WEB开发网 先在这个网站 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,解压后:
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”
更多精彩
赞助商链接