UNIX高级环境编程头文件apue.h配置详解

1.去该网站http://www.apuebook.com/下载源码 src.tar.bz

2.解压到某目录,假定为/home/user,进入解压后的文件修改 Make.defines.linux中的WKDIR=/home/user/apue.2e

3.返回至apue.2e/std目录下面,修改linux.mk,将里面的nawk全部改为awk,可以使用这个命令 :1,$s/nawk/awk/g 4.make后将会遇见两个问题。

a)gcc -DLINUX -ansi -I/tmp/apue.2e/include -Wall -D_GNU_SOURCE -DDEBUG -c -o printd.oprintd.c

In file included from /usr/include/i386-linux-gnu/bits/time.h:86:0, from /usr/include/time.h:42, from /usr/include/pthread.h:26, from printd.c:11:

/usr/include/i386-linux-gnu/bits/timex.h:31:7: 错误: expected ‘:’, ‘,’, or ‘__attribute__’ before ‘.’ token 原因:

在apue.2e/ipp.h中定义了一个宏定义status和

/usr/include/i386-linux-gnu/bits/timex.h中的成员status冲突

解决方法:

修改这个apue.2e/ipp/ipp.h文件中的宏名称,例如改为Status

然后将apue.2e/ipp/printd.c中977行的 hp->status 改为hp->Status b)ARG_MAX未定义

;’, ‘}’‘ 在apue.2e/include/apue.h中添加一行: #define ARG_MAX 4096

打开apue.2e/threadctl/getenv1.c 和apue.2e/threadctl/getenv3.c,添加一行: #include \

5.解决完以上两个问题后,就可以make成功。

6.把头文件apue.h放到/usr/include/中,注意要以root用户操作以下命令 cp ~/apue.2e/include/apue.h /usr/include cp ~/apue.2e/lib/libapue.a /usr/lib/

7.编译时候可以使用 gcc 源程序.c -o 可执行程序名 /usr/lib/libapue.a ps,如果c++引用此头文件和静态库要使用extern \

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4