您的位置:首页 > 编程语言

unix环境高级编程代码编译方法

2014-07-05 16:40 281 查看
本人最近在学习《unix环境高级编程》一书,首先碰到的就是书中代码编译不过的问题。

首先是书中大部分程序都包含头文件apue.h,这是作者为了减少书中程序长度而将大多数程序需要包含的系统头文件统一包含在apue.h中,这样程序只需包含apue.h即可。另外该文件包含作者提供的出错处理例程和一些封装函数的声明。

现将解决方法记录如下(本人平台是ubuntu14.4):

1.从网上下载书中程序源码包,下面提供两个下载地址:

(http://download.csdn.net/detail/lsw_ruc/668760,http://download.csdn.net/detail/tyronedong/577141)。

2.将下载下来的压缩包解压(位于目录 :/home/sar/Src/apue.2e.tar.gz)

cd /home/sar/Src (根据自已的实际存在目录进行修改)

tar -xzvf  apue.2e.tar.gz

这会在当前目录下生成apue.2e文件夹

3.进入该文件夹

cd apue.2e

该目录中有个检测机器平台的脚本systype.sh,需要有执行权限

chmod +x systype.sh

另外根据自已的机器平台修改相应的Make.defines.***文件,例如本人是linux平台,修改Make.defines.linux

中WKDIR=/home/sar/Src/apue.2e,即修改为源码文件的位置。

4.执行sudo make

5.把头文件apue.h放到/usr/include/中,以root用户操作以下命令

cp ./include/apue.h /usr/include

cp ./lib/libapue.a /usr/lib

chmod 644  /usr/include/apue.h

6.验证:

mv fig1.3 fig1.3.c

gcc fig1.3.c -o ls -lapue 

7.编译时出现的问题:

apue源码make:/usr/include/bits/timex.h:31:7: 错误:expected ‘:’, ‘,’, ‘;’, ‘}’ or ‘__attribute__’ be的解决方法 参考:
http://blog.csdn.net/muais/article/details/6885708
在我的机器上编译时,提示ARG_MAX未定义,可以这么修改。

在apue.2e/include/apue.h中添加一行:

#define ARG_MAX 4096

打开apue.2e/threadctl/getenv1.c 和apue.2e/threadctl/getenv3.c,添加一行:

#include "apue.h"
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息