天天看点

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

从网站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

继续阅读