首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >libdl和libltdl有什么区别?

libdl和libltdl有什么区别?
EN

Stack Overflow用户
提问于 2017-12-12 22:25:02
回答 1查看 1.7K关注 0票数 0

libdllibltdl的区别是什么?我只是注意到libodbc链接到他们两个

代码语言:javascript
复制
ldd /usr/lib/x86_64-linux-gnu/libodbc.so.2 | grep -i dl
    libltdl.so.7 => /usr/lib/x86_64-linux-gnu/libltdl.so.7 (0x00007f411b822000)
    libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f411b01f000)

我再次知道Perl链接libdl

代码语言:javascript
复制
ldd /usr/bin/perl | grep -i dl
    libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f55faa2e000)

我看到系统上有两个独立的共享对象,

代码语言:javascript
复制
ls -lah /usr/lib/x86_64-linux-gnu/libltdl.so.7.3.1 /lib/x86_64-linux-gnu/libdl-2.26.so 
-rw-r--r-- 1 root root 39K Aug 20  2016 /usr/lib/x86_64-linux-gnu/libltdl.so.7.3.1
-rw-r--r-- 1 root root 15K Oct 11 15:21 /lib/x86_64-linux-gnu/libdl-2.26.so

它们都和类似的东西联系在一起,

代码语言:javascript
复制
ldd /usr/lib/x86_64-linux-gnu/libltdl.so.7.3.1
    linux-vdso.so.1 =>  (0x00007ffc3e66b000)
    libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007efcbad4c000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007efcba96c000)
    /lib64/ld-linux-x86-64.so.2 (0x00007efcbb15a000)
ldd /lib/x86_64-linux-gnu/libdl-2.26.so
    linux-vdso.so.1 =>  (0x00007ffe7889c000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fbc9a14e000)
    /lib64/ld-linux-x86-64.so.2 (0x00007fbc9a732000)

是什么让libltdl与众不同?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-12-13 14:10:37

libtool的一个特性是为具有相同或类似功能的许多不同平台(如POSIX的dlopen等、Windows的LoadLibrary等)提供libdl API (例如dlopen),并为链接器不支持动态链接的平台提供共享库仿真。

我在我的Linux上对libodbc.so.2做了一些分析。nm -D似乎只显示libodbc.so.2libltdl符号,而objdump -pNEEDED部分中似乎只有libltdl.so.7,因此ldd似乎没有打印出完全准确的信息(您的grep输出与我看到的类似)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47782554

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档