UNIX环境高级编程 第三版 源代码编译及使用

发布时间 2023-04-18 10:34:02作者: 时间在哪
UNIX环境高级编程(第3版)中的代码示例多次包含了一下头文件:
#include "apue.h"
搜索发现原来这个头文件是作者自定义的一个文件,并在官网提供了源代码供下载。
下载之后解压该文件:
tar -zxf src.3e.tar.gz
进入文件夹并编译:
cd apue.3e
make
等待结束,如果没有报错就成功了。(如果报错误:undefined reference to `heapsort',按照文章最后的解决方案可以解决。)
把apue.h 与 libapue.a 放入到对应的目录中:
cp ./include/apue.h /usr/include/
cp ./lib/libapue.a /usr/local/lib/
qpue.h是所有函数的声明以及宏定义,gcc在搜索头文件的时候默认会去搜索/usr/include/中的文件。
libapue.a是apue.h头文件中包含的所有函数及宏定义的具体实现,是一个静态链接库,gcc在搜索链接库的时候默认会去搜索/usr/local/lib/中的文件。
至此,编译环境就配置成功,可以直接编译书中源代码。
 

  • barrier.c:(.text+0x80): undefined reference to `heapsort'
出现该错误是因为heapsort在CentOS 7下没有相关的库,在网上搜索发现这个函数和libbsd-devel相关,按照下面步骤下载资源后:
yum install -y https://download-ib01.fedoraproject.org/pub/epel/7/x86_64/Packages/l/libmd-1.0.4-2.el7.x86_64.rpm
yum install -y https://download-ib01.fedoraproject.org/pub/epel/7/x86_64/Packages/l/libmd-devel-1.0.4-2.el7.x86_64.rpm
yum install -y https://download-ib01.fedoraproject.org/pub/epel/7/x86_64/Packages/l/libbsd-0.11.7-2.el7.x86_64.rpm
yum install -y https://download-ib01.fedoraproject.org/pub/epel/7/x86_64/Packages/l/libbsd-devel-0.11.7-2.el7.x86_64.rpm
下载完资源后,再次make,这次能成功了。