最近在看Richard Stevens 的《UNIX环境高级编程》,书中的例子多次出现一个不认识的头文件 #include"apue.h",而且编译时会报错。在网上找了一下才知道原来apue.h 是作者自定义的一个头文件,并不是Unix/Linux系统自带的,此头文件包括了Unix程序所需的常用头文件及作者Richard自己写的出错处理函数。所以在默认情况下,gcc在编译时是读不到这个头文件的。
可以去http://www.apuebook.com/src.tar.gz 下载tar.gz格式的源码包,之前我的虚拟机网络连接为网桥方式,不能上网,后来接改为NAT,并开启DHCP,就可以上网了。将源码包下载下来,解压,会得到一个名为apue.2e的文件夹,然后进入到文件夹下,make,提示报错,apue.2e/threadctl中的ARG_MAX未定义。根据UNIX环境高级编程中的apue.h错误所说的进行修改,然后再make(不明白此处为什么要make)。最后,将apue.2e/include/apue.h和apue.2e/lib/error.c复制到/usr/include目录下。