先在这个网站 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