从网站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时出现了
[email protected]:~/桌面/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.csdn.net/qq_26437925/article/details/51381600