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

来源:互联网 发布:淘宝卖家密码修改 编辑:程序博客网 时间:2024/04/26 22:02

《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.c和apue.2e/threadctl/getenv3.c,添加一行:#include "apue.h"

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

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

0 0