首页 > 代码库 > APUE 3.0 源码例程编译问题解决 sys_error sys_quit cannot find -lbsd
APUE 3.0 源码例程编译问题解决 sys_error sys_quit cannot find -lbsd
- 编译例程文件出现下面错误
提示找不到apue.h err_quit err_quit函数,对于apue.h可在编译时指定路径:-Iinclude,或者直接将文件拷贝至当前的源代码目录下, 对于 err_quit err_quit有两种方法:
1、直接将error.c文件放在源代码目录下,在自己的代码中包含进来,直接进行编译。(比较麻烦,我们采用下面的一种)
2、编译时指定库文件目录,例如-Llib ,其中lib为具体目录,同时还需指定需要链接的库文件libapue.a,该文件需要按照下面的步骤进行make生成。
- 首先进入apue.3e文件夹中,vim README文件,告诉我们直接进行make,在终端输入$make 出现下面错误:
cannot find bsd 发现缺少libbsd.so库,上网进行搜索$sudo apt-cache search libbsd-dev (bsd是库名),发现库存在,然后
$sudo apt-get install libbsd-dev 进行安装,然后$make clean ; make进行编译,编译后可以发现在lib目录下多了个目标文件
libapue.a
- 然后就可以进行编译连接文件
以下是正确的做法:
编译成功。
注意lib/libapue.a必须放在.c文件的后面否则会出现下面问题:
在链接libapue.a时出现错误。
如果每次指定都嫌麻烦可以用alias进行指定:
$mylib=‘-I‘$HOME‘/apue.3e/include -L‘$HOME‘/apue.3e/lib ‘$HOME‘/apue.3e/lib/libapue.a -o output‘
$gg mysource.c $mylib
参考文档:http://blog.csdn.net/mzwang123/article/details/6702889
http://www.chinaunix.net/old_jh/4/906787.html
APUE 3.0 源码例程编译问题解决 sys_error sys_quit cannot find -lbsd