在苹果 OS X 10.11 El Capitan 中使用《UNIX环境高级编程--第三版》中提供的头文件 apue.h 。
make apue.3e
这里我买的是第三版的书,和第二版不同,不用改工作路径等信息。正如在readme中说到的,在OS X上进入目录直接make即可。
修改apue.h
我们需要在apue.h的最后部分的
#endif /* _APUE_H */
前面加上一句:
#include "error.c"
最终是这样的:
关于/usr/include/
首先在OS X中,直接打开目录 /usr/include/,会发现系统找不到目录,解决方法是安装 command line tools,如果你安装了Xcode,可以在Xcode中进行安装,但是Xcode那么大,下载起来很麻烦的,我们可以采用这个方法:
直接在终端中执行
xcode-select --install
成功安装之后就可以看到这个目录了:
无权限修改/usr/include/
我们在make之后,就要把 apue.3e/include/ 中的 apue.h 和 apue.3e/lib/ 中的 error.c 拷贝到 /usr/include/ 目录中,但是会发现在OS X 10.11 中是 Permission Denied 。
是因为OS X 在 El Capitan 中开启了一个叫 SIP 的操作系统保护机制,对于高级的OS X 使用者来说,这个功能是可以关闭的。
解决方案: 重启 Command + R, 进入终端输入
csrutil disable
再开机之后就可以进行复制的操作了:
cp include/apue.h /usr/include/apue.h
cp lib/error.c /usr/include/error.c
结束
经过上面的操作之后,成功编译书中的第一个例子程序:
搞定!