先在这个网站 http://www.apuebook.com/src.tar.gz 下载相应的版本tar.gz格式的源码包

然后解压到/home/xxx/目录中

然后进入目录apue.2e,把文件 Make.defines.linux 中的 WKDIR=/home/xxx/apue.2e 修改为 WKDIR=/home/ray/apue.2e ,然后再进入apue.2e目录下的std目录,打开linux.mk,将里面的nawk全部替换为awk 

执行make

如果出现stropts.h找不到的情况,则下载glibc-2.11,解压缩    
   cp ./glibc-2.11/streams/stropts.h /usr/include    
   cp ./glibc-2.11/bits/stropts.h /usr/include/bits    
   cp ./glibc-2.11/sysdeps/x86_64/bits/xtitypes.h /usr/include/bits 

然后把 /home/ray/apue.2e/inlcude 目录下的 apue.h 文件和位于 /home/godsoul/apue.2e/lib 目录下的 error.c 文件都复制到 /usr/include 目录下,apue.2e/lib/libapue.a 到/usr/lib/和 /usr/lib64下。是因为gcc在链接头文件时会到 /usr/include 这个目录下寻找需要的头文件,若找不到则报错。

提示    ARG_MAX    未定义    

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

编译测试

gcc /home/ray/apue.2e/file/ls1.c  -o ray /home/ray/apue/lib/libapue.a