加入收藏 | 设为首页 | 会员中心 | 我要投稿 草根网_马鞍山站长网 (https://www.0555zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

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

发布时间:2022-10-24 10:43:01 所属栏目:教程 来源:
导读:  正在拜读Richard Stevens的大作《UNIX环境高级编程》,当读到第一个编程实例时,就懵了!一个简短的程序,就是编译不通过!各种错误!上网找了一下,才知道原来是那个头文件apue.h在我的系统里面没有,那个文件其
  正在拜读Richard Stevens的大作《UNIX环境高级编程》,当读到第一个编程实例时,就懵了!一个简短的程序,就是编译不通过!各种错误!上网找了一下,才知道原来是那个头文件apue.h在我的系统里面没有,那个文件其实是Richard他自己写的一个头文件,里面定义了一系列的常量与变量,还有他也写了error.cz这个文件,这个文件是他定义了很多错误处理函数的文件,如果这个文件系统找不到的话,像他的err_quit()等函数就无法使用!好了,不费话了,下面是我从网上搜寻来的数据,在我的系统上(CentOS 6.3)完成了配置:
 
  先在这个网站 下载tar.gz格式的源码包,然后解压至某个目录,比如说/home/godsoul/下,然后进入目录apue.2e高级unix编程,把文件 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下载:)
 
  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”
 
  这下就全部该搞定了!
 

(编辑:草根网_马鞍山站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!