UNIX环境高级编程 源代码编译apue.h头文件的问题

本文介绍如何解决《UNIX环境高级编程》源代码在Linux环境下编译时出现的错误,包括配置Makefile、复制关键文件到系统目录等步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

从网站http://www.apuebook.com/
1)下载《UNIX环境高级编程》原代码src.tar.gz
2)用命令tar -xvf src.tar.gz 解压,产生apue.2e文件夹
3)执行make
通常会出现编译不过的情况。

[分析]:
提示 "错误:apue.h:没有那个文件或目录".
apue.h是作者自定义的一个头文件,包括程序所需的常用头文件及出错处理函数。
所以因该将它放入系统头文件中(Linux下是 /usr/include),这样gcc编译器就可以找到它了。

[解决]:
1)修改 Make.defines.linux中的WKDIR=/home/xxx/apue.3e,为WKDIR=/home/user/apue.2e,这就是我们将要make的工作目录
2)然后再进入std目录,用vi或者gedit打开linux.mk,将里面的nawk全部改为awk,vi可以使用这个命令   :%s/nawk/awk/g   (注意前面有冒号)
:wq!保存,退出
3)然后 make
...

4)复制相关头文件
1. 超级用户权限登入 #cd /usr/include
2. 将apue.h和error.c两个文件copy到该目录下。
(apue.h位于 /inlcude ; error.c位于/lib )
以我的了路径为例:
#cp /apue.3e/inlcude/apue.h /usr/include.
#cp /apue.3e/lib/error.c /usr/include (实现apue.h中的出错处理函数)

5)编辑apue.h
#vi apue.h
在最后一行 #endif  前面添加一行 #include "error.c"
:wq 保存,退出.

这样你就“享受”你下载的apue程序了.

在编译其他文件如ls1.c时出现了 
ding@ding-Lenovo-G480:~/桌面/apue.2e/file$ gcc -o ls1 ls1.c 
/tmp/cciUZ4Ir.o:在函数‘main’中: 
ls1.c:(.text+0x20):对‘err_quit’未定义的引用 
ls1.c:(.text+0x5b):对‘err_sys’未定义的引用

要将apue.3e/lib/error.c 复制到/usr/local/include

要将apue.3e/include/apue.h 复制到/usr/local/include

参考网址:http://blog.youkuaiyun.com/qq_26437925/article/details/51381600

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值