1. 首先需要下载源代码压缩包:
UNIX高级环境编程的源代码 – src.3e.tar.gz
2. 在CentOS-7下解压源代码文件
tar -zxv -f src.3e.tar.gz -C /usr/include/
3. 转到解压后的apue.3e/目录下进行make编译:
make
4. 进行编译后报错信息为:
gcc -ansi -I…/include -Wall -DLINUX -D_GNU_SOURCE barrier.c -o barrier -L…/lib -lapue -pthread -lrt -lbsd
/tmp/cc6Z8vzR.o: In functionthr_fn': barrier.c:(.text+0x80): undefined reference to
heapsort’
collect2: error: ld returned 1 exit status
make[1]: *** [barrier] Error 1
5. 发现heapsort在CentOS-7下没有相关的库,下载Fedora的资源进行安装:
# yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
然后执行:
# yum install libbsd libbsd-devel
5.现在可以make了
6.把make生成的apue.h与静态链接库libapue.a放到系统指定寻找的地方:
cp ./include/apue.h /usr/include/
cp ./lib/libapue.a /usr/local/lib/
现在就可以使用《Unix环境高级编程》中的apue.h库了!
以一个简单的程序为例:
[root@localhost test]# ls
hello.c
[root@localhost test]# cat hello.c
#include"apue.h"
int main(void){
printf(“hello world from process ID %d\n”,(long)getpid());
exit(0);
}
[root@localhost test]# gcc hello.c -l apue
[root@localhost test]# ls
a.out hello.c
[root@localhost test]# ./a.out
hello world from process ID 99017