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

配置《UNIX环境高级编程》中程序的运行环境,解决“apue.h:没有那个文件或目录”错误

2012-12-10 17:30 453 查看
刚开始看《UNIX环境高级编程》这本书,今天开始调试《UNIX环境高级编程》中的第一个程序,错误提示 “错误:apue.h:没有那个文件或目录”。

今天弱弱地敲了书中的第一个书中的程序,如下:

#include "apue.h"

int main(void)

{

printf("hello world from process ID %d/n", getpid());

exit(0);

}

然后一编译,提示“错误:apue.h:没有那个文件或目录”。

网上一搜,找到了很多解决方案,仔细一看,发现都相似。于是,我照着步骤,实践了一把。下面详细叙述。

在网上找了一些资料,按照提示,在http://www.apuebook.com/下载了src.tar.gz压缩包,原来这本书还有一个专门的网站支持。建议大家到这个网站上看看,有书中的源代码 勘误等补充。

apue.h不是Unix/Linux系统自带的,此头文件包括了Unix程序所需的常用头文件及作者Richard自己写的出错处理函数。所以在默认情况下,gcc在编译时是读不到这个头文件的。

步骤:

1. 解压src.tar.gz压缩包,命令如下

tar -xzvf src.tar.gz

2. 解压之后,会得到一个apue.2e的文件夹。以我的文件夹结构为例,我把src.tar.gz解压到了/home/wycherley/unix/中。

在/home/wycherley/unix/apue.2e中,把文件Make.defines.linux中的 WKDIR=/home/sar/apue.2e修改为WKDIR=/home/wycherley/unix/apue.2e

3.然后再进入apue.2e目录下的std目录,打开linux.mk,将里面的nawk全部替换为awk。(修改两处。)

以上2 ,3步我是在vim中,直接手动修改的。总共修改了3个地方,工作量不大。

4. 修改/home/wycherley/unix/apue.2e/include下的apue.h文件,加入一行

#define ARG_MAX 4096

(若在此步在 apue.h中添加 #include "error.c"这一行,会报错,说重复定义了)

5. 打开终端,进入/home/wycherley/unix/apue.2e目录下,执行make命令,即在终端输入make,开始编译。命令如下:

cd /home/wycherley/unix/apue.2e

make clean //先删除以前生成的可执行文件及 .o文件

make

6. 在这一步,我这里编译成功了。将将apue.h和error.c两个文件copy到 /usr/include。

cp /home/wycherley/unix/apue.2e/include/apue.h /usr/include

cp /home/wycherley/unix/apue.2e/lib/error.c /usr/include

7. 进入 /usr/include,编辑拷贝过来的apue.h

在最后一行 #endif /* _APUE_H */ 前面添加一行 #include "error.c"

然后保存退出。

8. 这时,就可以运行下载的程序,和自己编辑的程序了。

===================================================================================

以下是参考的文章:
http://blog.csdn.net/peilw625311/article/details/7454099 http://luochunfeng163.blog.163.com/blog/static/16700924920125451819928/ http://www.cnblogs.com/feiling/archive/2012/02/15/2353286.html http://blog.chinaunix.net/uid-20665047-id-3123350.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐