1.从网络上获取代码,地址如下apue最新官方下载地址
2.解压到本地
由于最新版本是第三版(3rd Edition),apue.3e,就是我们要的源代码
3.编译源代码
编译过程中笔者并未遇到任何问题,所以建议大家也下载最新版本的代码来学习,贴一下笔者的环境信息
Configured with: --prefix=/Library/Developer/CommandLineTools/usr --with-gxx-include-dir=/usr/include/c++/4.2.1
Apple LLVM version 6.1.0 (clang-602.0.53) (based on LLVM 3.6.0svn)
Target: x86_64-apple-darwin14.5.0
Thread model: posix
3.1 没有安装xcode,只安装了os x命令行开发工具,os x用户可以在这里下载官方最新最全版本的xcode及命令行开发工具(xcode ghost出了之后只信任官方haha),笔者安装的是适用于os x10.10的版本,目前稳定版的xcode是6.4所以就选6.4版本,读者可自行选择。
最新版本的gcc(5.2.0)在编译的时候会有不支持-R命令的问题,因此就选用了自带的4.2.1(好像是吼),读者如果用的也是不支持-R命令的问题,可以尝试更换其他版本的gcc。
3.2 编译
进入apue.3e目录,make
生成的文件中,对于本文最重要的一个,静态库文件:apue.3e/lib/libapue.a,由lib下的.c文件生成,目测是本书所有例程中调用的自己编写的函数静态库。
这个阶段笔者没有遇到问题所以。。。进入下一节,例程:ls(1)命令的简要实现。
4.ls(1)命令的简要实现 第一个例子
在网上尝试搜索的时候发现很多初学的小伙伴都卡在了这里,着重介绍下,例程代码就不在这敲了,下载的代码里有/apue.3e/ls1.c,有一个很坑爹的事实知会os x的同学,书中给的命令cc myls.c不能直接用!
我们要这么编译:
4.1.添加C_INCLUDE_PATH路径使#include "apue.h"可用,具体操作请自行查找
4.2.编译,输入命令gcc -c myls.c,只编译出.o文件
4.3.链接,链接过程中要加入静态库路径,gcc -o myls myls.o -L/Users/AlexTuan/unix/apue.3e/lib -lapue,读者将高亮部分替换成自己的libapue.a的路径即可。
4.4.运行 ./myls test 就可以列出test目录下所有的子目录/文件。
殷切希望可以帮到和我一样在os x下初学 UNIX环境高级编程的小伙伴们,不用像我一样浪费两三个晚上才找到答案TUT。
如果本文对你有所帮助,请随意转载,注明作者即可。
THE END
来源:oschina
链接:https://my.oschina.net/u/2491285/blog/530425