• 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

  • 相关阅读:
    android studio gradle plugin 用户指南 选择性翻译
    c++ 遍历多维数组的10种方式
    cocos2dx FixedPriority和SceneGraphPriority
    cocos2dx 坐标转换
    MySQL删除表
    MySQL修改表
    MySQL创建表
    MySQL的删除语句
    MySQL的更新语句
    MySQL的插入语句
  • 原文地址:https://www.cnblogs.com/ltfbk/p/4102559.html
Copyright © 2020-2023  润新知