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

本人最近在学习《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"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值