机器环境是:Ubuntu 10.04
源码:请下载 apue2源码(UNIX环境高级编程2源码)
源码编译方法:
- 请确定你已经下载了apue2源码。
- 将文件Make.defines.linux里的WKDIR改为你的源代码存放路径,默认情况是WKDIR=/home/sar/apue.2e
- 在WKDIR目录下,运行make,发现错误【threadctl/getenv1.c下ARG_MAX未定义】
解决方法是:修改文件getenv1.c和getenv3.c的头文件声明部分,将 “#include <limits.h>”改为“#include <linux/limits.h>”。请参见[1]或[2]
- 解决3中的问题后,在WKDIR目录下再次运行make. 成功.
- 成功后,会在WKDIR/lib/下生成库文件libapue.a
利用APUE2环境进行UNIX编程(例子):
- 我们以WKDIR/fig1.3为例子。
- 在WKDIR目录下,运行
cp fig1.3 fig.1.3.c
- 编译并链接fig1.3.c程序文件。
gcc fig1.3.c -I include/ lib/libapue.a
- 成功了。PS: 这里,我们必须指定apue.h这个头文件的地址,所以用-I include/ 。 其次,我们要指定APUE2环境的库文件(这个库是我们在“源码编译方法“里编译出来的,它包含了书本的一些CPP实现),所以我们在编译链接我们自己的CPP文件时,需要把 lib/libapue.a也编译链接进来。可参见[3]
Reference:
- http://blog.csdn.net/darkowner/archive/2011/01/07/6121933.aspx
- http://ssepqhyneg.blog.163.com/blog/static/4105553920106804956179/
- http://bamboo.72pines.com/2010/12/15/ubuntu%E4%B8%8B%E7%BC%96%E8%AF%91apue%E6%BA%90%E7%A0%81/