编译apue.3e并解决编译错误

下载源代码

我们在学习APUE这本书的时候,总会见到书上的源代码总会引用apue.h这个头文件,这个并不是Linux系统自带的。所以,我们要自己编译。
我们在http://www.apuebook.com/src.3e.tar.gz下载源代码后,解压。

1
tar -zxvf src.3e.tar.gz

然后编译

1
sudo make

但是在编译过程中,会出现错误,错误部分的log是这样的。

1
2
3
4
5
6
7
8
9
gcc -ansi -I../include -Wall -DLINUX -D_GNU_SOURCE  badexit2.c -o badexit2  -L../lib -lapue -pthread -lrt -lbsd
/usr/bin/ld: cannot find -lbsd
collect2: ld returned 1 exit status
Makefile:31: recipe for target 'badexit2' failed
make[1]: *** [badexit2] Error 1
make[1]: Leaving directory '/home/pi/apue.3e/threads'
Makefile:6: recipe for target 'all' failed

make: *** [all] Error 1

修复

出现这个错误是因为,我们缺少一个库。

1
sudo apt-get inatall libbsd-dev

安装完成后,重新进行编译.

1
cp ./include/apue.h ./lib/error.c /usr/include

然后,在/usr/include/apue.hifdefendif中间添加#include "error.c",就可以在编写的程序中,愉快的使用apue.h了。