netlink,链接到libnl-3和libnl-1

时间:2016-12-18 19:01:52

标签: linker netlink

我有一个使用libnl的应用程序。它可以使用任一版本(1或3),并且在配置期间,如果未找到libnl3,它首先尝试使用ibnl3并回退到libnl-1。

我的应用程序使用另一个也使用libnl的库。 问题是我的机器上只有libnl1-dev,所以我的应用程序必须使用它。 但我使用的库使用libnl3(与yum一起安装,我猜它是静态链接的) 所以我有版本和我的应用程序崩溃!!

这里有一些印刷品

ldd myapp.so|grep libnl
        libnl.so.1 => /lib64/libnl.so.1 (0x00007fda33eb5000)
        libnl-route-3.so.200 => /lib64/libnl-route-3.so.200 (0x00007fda32a3d000)
        libnl-3.so.200 => /lib64/libnl-3.so.200 (0x00007fda3281b000)

yum list|grep libnl
    libnl.x86_64                            1.1.4-3.el7               
    libnl-devel.x86_64                      1.1.4-3.el7               
    libnl3.x86_64                           3.2.28-2.el7              
    libnl3-cli.x86_64                       3.2.28-2.el7              
    libnl.i686                              1.1.4-3.el7                
    libnl-devel.i686                        1.1.4-3.el7                
    libnl3.i686                             3.2.28-2.el7               
    libnl3-cli.i686                         3.2.28-2.el7               

如果在安装libnl3-dev中它修复了这个问题 有另一种解决方案吗?

1 个答案:

答案 0 :(得分:0)

  

如果我安装libnl3-dev它修复了问题还有另一个解决方案吗?

还有其他解决方案,但最重要的是,您只能拥有libnl.so.1 libnl-3.so.200,但不能同时拥有这两种解决方案。

通过"全力投入libnl-3"是最简单的解决方案。

另一种方法是在libnl-1"上全力以赴,这意味着从源代码中重建需要libnl-3的任何内容(针对libnl-1)。这假设您的其他依赖项可以根据libnl-1构建(这绝不是保证)。