《unix环境高级编程》书中源代码编译问题解决

unix环境高级编程》书中源代码编译问题解决

第一次接触《unix环境高级编程》这本经典书籍,不过在编译书中提供的源代码时出现错误。最终,还是看编译错误提示解决了这个问题。

我的系统是:linux/Ubuntu 12.04 源代码下载地址:http://www.apuebook.com/src.tar.gz。下载源代码之后,就是解压到相关目录下。比如我解压到/home/username/目录下,即/home/username/apue.2e。(注意:username即是你的用户名)。

然后有两个文件修改操作:

1.apue.2e目录下的文件Make.defines.linux 中的 WKDIR=/home/xxx/apue.2e 修改为 WKDIR=/home/username/apue.2e

2.再进入apue.2e目录下的std目录,打开linux.mk,将里面的nawk全部替换为awk

文件移动操作:

/home/username/apue.2e/inlcude 目录下的 apue.h 文件和位于 /home/username/apue.2e/lib 目录下的 error.c 文件都复制到 /usr/include 目录下。

还有就是在apue.h文件的最后一行#endif 添加#include “error.c”.

最后进入/home/username/apue.2e目录下,输入make即可执行编译。

出现了两个问题!

1. apue.2e/ipp/ipp.h 出现宏定义:#define status u.st

编译出现错误提示:expected ':', ',', ';', '}' or '__attribute__' before '.' token

解决方案:apue.2e/ipp/ipp.h的宏定义:#define status u.sth中的status改成Status;然后将同目录下的printd.c中的977行的i=ntohs(hp->status);中的status改成Status

2.提示ARG_MAX未定义

解决方案:apue.2e/include/apue.h中添加一行:#define ARG_MAX 4096;打开apue.2e/threadctl/getenv1.capue.2e/threadctl/getenv3.c,添加一行:#include "apue.h"

注意:先输入make clean后在输入make;此时编译通过。

OK,问题解决。相当于敲开《unix环境高级编程》这本书的大门吧!慢慢深入。



你可能感兴趣的:(《unix环境高级编程》书中源代码编译问题解决)