您的位置:首页 > 产品设计 > UI/UE

UNIX环境高级编程 apue.h头文件的配置

2016-07-31 19:08 316 查看
初学《UNIX环境高级编程》的朋友都会遇到一个问题,运行里面的实例(download: http://www.apuebook.com/)时就出现问题,提示 "错误:apue.h:没有那个文件或目录". 
apue.h是作者自定义的一个头文件,包括程序所需的常用头文件及出错处理函数。所以因该将它放入系统头文件中(Linux下是 /usr/include),这样gcc编译器就可以找到它了。 

1、先在这个网站 http://www.apuebook.com/ 下载tar.gz格式的源码包,然后解压至某个目录,比如说/home/xhm/下,然后进入目录apue.2e,把文件 Make.defines.linux 中的 WKDIR=/home/sar/apue.2e 修改为 WKDIR=/home/xhm/apue.2e ,然后再进入apue.2e目录下的std目录,打开linux.mk,将里面的nawk全部替换为awk。

2、然后在此目录下运行make命令,即回到 /home/xhm/apue.2e 目录在终端中输入 “make” (不含引号)

出现错误1:没找到apue.h。

解决:把当前源码中的apue.h(在include/apue.h)拷贝到/usr/include(需要权限)

再编译,出现错误2:ARG_MAX 没找到

在apue.h中加入#define ARG_MAX 4096

再编译:出现没找到 。在下面文件加入#define
ARG_MAX 4096  就可以
(apue.2e/threadctl/getenv1.c 和apue.2e/threadctl/getenv3.c 一般这两个文件出现这点错误)
再编译,出现错误:
In file included from /usr/include/i386-linux-gnu/bits/time.h:86:0,

                 from /usr/include/time.h:42,

                 from /usr/include/pthread.h:26,

                 from printd.c:11:

/usr/include/i386-linux-gnu/bits/timex.h:31:7: 错误: expected ‘:’, ‘,’, ‘;’, ‘}’ or ‘__attribute__’ before ‘.’ token

这是linux的time.h中定义林全局变量status,在apue2e/ipp的ipp.h中也定义了,改成Status,编译出错的时候将相应位置的status改成Status即可,再把apue2e/ipp/printd.c中的hp->status
改成hp->Status(900多行的位置)即可。

最后编译通过。

3、最后把apue.h/lib下的error.c放到/usr/include/中,用vi在apue.h的最后一行
#endif前 加一句#include"error.c "这就是书本中第一个实例定义的err_quit和err_sys输出方法。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Linux c 函数 apue.h