构建库问题libudns

时间:2017-12-29 10:09:22

标签: c linux configure

首先感谢您的关注和帮助。

我一直在尝试./configure并构建一个使用大量库,特别是libudns的程序。我一直在安装几个需要的库,或者通过apt-get或者编译,所有这些库都可以工作,但是libudns(这让我很害怕)。

此程序使用 configure 脚本,该脚本包含以下行代码,用于将标记-ludns添加到 Makefile

if [ "x$WITH_UDNS" == "xy" ]; then
    mkl_lib_check "udns" HAVE_UDNS fail CC "-ludns" \
        "#include <udns.h>
        void *f();void *f(){return dns_init;}"
fi

当我键入./configure时,脚本会通过 pkg-config 编译检查系统中是否存在所有库,正如您在跟随快照:

Configure checks

如您所见,configure无法看到此库。

我所做的是尝试通过两种不同的方式安装此软件包:

  1. 通过pkg-config:sudo apt-get install libudns-dev

  2. 通过编译:

    git clone https://github.com/shadowsocks/libudns cd libudns ./autogen.sh ./configure && make sudo make install

  3. 通过这两种方式,我同时拥有:

    /usr/lib/x86_64-linux-gnu/libudns.so
    /usr/local/include/udns.h
    

    这些路径与安装其他库的路径相同,例如PostgreSQL,您可以检测到它:

    /usr/lib/x86_64-linux-gnu/libpq.so
    /usr/include/postgresql/libpq-fe.h
    

    但结果总是一样的:

    Building error

    有人知道如何链接这个库吗?

    另外,我还尝试了其他一些事情:

    • 将udns.h复制到/ usr / include:sudo cp /usr/local/include/udns.h /usr/include/udns.h

    • 仅制作示例程序以模拟此检查:

      #include <stdio.h>

      #include <udns.h>

      struct dns_ctx* ctx;

      void *f(); void * f(){return dns_init;}

      int main(int argc, char** argv){     int do_open = 0;     printf("Hola, mundo\n");     f(ctx, do_open); }

    当我尝试用以下代码构建此程序时:

    gcc main.c -o hello_world -ludns
    

    WORKS !?!

    我还尝试在没有 -ludns 标志的情况下构建此程序,它给我的错误与以前相同:

    Sample program error

    所以,我不明白失败的地方,考虑到你可以在第二张图片中看到, -ludns 标志存在。

    非常感谢你的时间。任何建议都会受到欢迎。

0 个答案:

没有答案