Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1342521
  • 博文数量: 244
  • 博客积分: 1039
  • 博客等级: 少尉
  • 技术积分: 1562
  • 用 户 组: 普通用户
  • 注册时间: 2011-01-06 09:40
文章分类

全部博文(244)

文章存档

2021年(2)

2019年(6)

2018年(2)

2014年(1)

2013年(187)

2012年(47)

分类: LINUX

2012-03-07 09:19:09

在Richard Stevens 的大作《UNIX环境高级编程》,编译书中的程序实例时会出现问题,提示 “错误:apue.h:没有那个文件或目录”。

apue.h 是作者自定义的一个头文件,并不是Unix/Linux系统自带的,此头文件包括了Unix程序所需的常用头文件及作者Richard自己写的出错处理函数。所以在默认情况下,gcc在编译时是读不到这个头文件的。

1、先在这个网站 下载tar.gz格式的源码包,然后解压至某个目录,比如说/home/xhm/下,然后进入目录apue.2e,把文件Make.defines.linux 中的 WKDIR=/home/xhm/apue.2e 修改为 WKDIR=/home/xhm/apue.2e ,然后再进入apue.2e目录下的std目录,打开linux.mk,将里面的nawk全部替换为awk。

2、然后在此目录下运行make命令,即回到 /home/xhm/apue.2e 目录在终端中输入 “./make” (不含引号)
出现错误1:没找到apue.h。
解决:把当前源码中的apue.h(在include/apue.h)拷贝到/usr/include
再编译,出现错误2:ARG_MAX 没找到
在apue.h中加入#define ARG_MAX 4096
再编译:出现没找到。在那个文件加入 #include 就可以
(apue.2e/threadctl/getenv1.c 和apue.2e/threadctl/getenv3.c 一般这两个文件出现这点错误)

最后编译通过。

3、把头文件apue.h放到/usr/include/中,注意要以root用户操作以下命令
cp ~/apue.2e/include/apue.h /usr/include[/code]

cp ~/apue.2e/lib/libapue.a /usr/lib[/code]

在编译apue里面的例子时,直接#include   就可以。
如果需要静态库,在最后面加入 -lapue 编译就行了。
例如:要编译15-1.c 需要用到库文件。
编译如下:gcc 15-1.c -o 15-1 -lapue
阅读(4744) | 评论(3) | 转发(4) |
0

上一篇:没有了

下一篇:Ubuntu下安装MySQL获得 mysql.h 建立C接口

给主人留下些什么吧!~~

轨迹162012-03-17 16:42:54

只是用到里面的书上的例子,已经由预先写好的实现和头文件

重返人生2012-03-08 23:40:29

自定义的文件没法读会不会是工程文件没包含进去啊!

忘忧草5552012-03-07 11:27:20

很有用的资料,这是标准的做法

我当时是把头文件和库文件的源码直接cp到默认头文件目录解决的,呵呵,那样比较山寨