libdl和libltdl的区别是什么?我只是注意到libodbc链接到他们两个
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。
ldd /usr/bin/perl | grep -i dl
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f55faa2e000)我看到系统上有两个独立的共享对象,
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它们都和类似的东西联系在一起,
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与众不同?
发布于 2017-12-13 14:10:37
libtool的一个特性是为具有相同或类似功能的许多不同平台(如POSIX的dlopen等、Windows的LoadLibrary等)提供libdl API (例如dlopen),并为链接器不支持动态链接的平台提供共享库仿真。
我在我的Linux上对libodbc.so.2做了一些分析。nm -D似乎只显示libodbc.so.2的libltdl符号,而objdump -p在NEEDED部分中似乎只有libltdl.so.7,因此ldd似乎没有打印出完全准确的信息(您的grep输出与我看到的类似)。
https://stackoverflow.com/questions/47782554
复制相似问题