所有例子在 linux-2.6.29.3 gcc-4.3.3 )下编译通过,需要做的修改如下:

l          打开apue.2e 文件夹下的Make.defines.linux 文件(根据你的系统选择对应文件),修改WKDIR=/home/var/apue.2e 为你的apue.2e 目录,如WKDIR=/home/pydeng/apue.2e

l          然后进入apue.2e/std 目录,编辑linux.mk ,修改里面所有的nawkawk

l          修改脚本文件systype.sh 的权限,给当前用户及其所在组和其他组添加可执行权限。(有些可无)

l          返回apue.2e 目录,执行make 命令。

l          在编译apue.2e/threadctl/getenv1.c 时,报告ARG_MAX 没有定义。在linux-2.6.X 下,ARG_MAX 被定义在/usr/include/linux/limit.h 文件里面。于是,将getenv1.cgetenv3.c 文件的include 改成#include <linux/limit.h>

l          再次make ,报告threads/badexit2.c 文件的31 行存在类型不匹配。将pthread_self() 的返回值强制转换成int

l          执行make ,顺利编译所有文件。

l          要在apue.2e 子目录下单独编译一个文件,需要对头文件apue.h 的路径作相对修改,如改为#include "../include/apue.h" 。另一种办法是,直接将apue.h 拷贝到/usr/include 下面。然后执行类似下面的命令。libapue.a 库实现了apue.h 中声明的函数。

pydeng@pydeng-laptop:~/apue.2e/file$ gcc –o ls1 ls1.c ../lib/libapue.a

l          Enjoy yourself :)

2009-11-19

posted on 2009-11-19 17:45  Kevin Bing  阅读(429)  评论(0编辑  收藏  举报