在苹果 OS X 10.11 El Capitan 中使用《UNIX环境高级编程–第三版》中提供的头文件 apue.h 。

make apue.3e

这里我买的是第三版的书,和第二版不同,不用改工作路径等信息。正如在readme中说到的,在OS X上进入目录直接make即可。

修改apue.h

我们需要在apue.h的最后部分的

1
#endif /* _APUE_H */

前面加上一句:

1
#include "error.c"

最终是这样的:

关于/usr/include/

首先在OS X中,直接打开目录 /usr/include/,会发现系统找不到目录,解决方法是安装 command line tools,如果你安装了Xcode,可以在Xcode中进行安装,但是Xcode那么大,下载起来很麻烦的,我们可以采用这个方法:

直接在终端中执行

1
xcode-select --install

成功安装之后就可以看到这个目录了:

无权限修改/usr/include/

我们在make之后,就要把 apue.3e/include/ 中的 apue.hapue.3e/lib/ 中的 error.c 拷贝到 /usr/include/ 目录中,但是会发现在OS X 10.11 中是 Permission Denied

是因为OS X 在 El Capitan 中开启了一个叫 SIP 的操作系统保护机制,对于高级的OS X 使用者来说,这个功能是可以关闭的。

解决方案: 重启 Command + R, 进入终端输入

1
csrutil disable

再开机之后就可以进行复制的操作了:

1
2
cp include/apue.h /usr/include/apue.h
cp lib/error.c /usr/include/error.c

结束

经过上面的操作之后,成功编译书中的第一个例子程序:

搞定!