libdl 和 libltdl 有什么区别?
What is the difference between libdl and libltdl?
libdl
和libltdl
有什么区别。我刚刚注意到 libodbc
link 给他们两个
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 links 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
他们都link也有类似的东西,
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
与众不同?
libtool
的一项功能是为具有相同或相似功能(例如 POSIX 的 dlopen
等,Windows 的 LoadLibrary
等),以及链接器不支持动态链接的平台的共享库仿真。
我在 Linux 盒子上对 libodbc.so.2
做了一些分析。 nm -D
似乎只显示 libodbc.so.2
的 libltdl
符号,而 objdump -p
在 NEEDED
部分似乎只有 libltdl.so.7
,所以 ldd
在这种情况下似乎没有打印出完全准确的信息(您的 grep
输出看起来与我看到的相似)。
libdl
和libltdl
有什么区别。我刚刚注意到 libodbc
link 给他们两个
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 links 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
他们都link也有类似的东西,
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
与众不同?
libtool
的一项功能是为具有相同或相似功能(例如 POSIX 的 dlopen
等,Windows 的 LoadLibrary
等),以及链接器不支持动态链接的平台的共享库仿真。
我在 Linux 盒子上对 libodbc.so.2
做了一些分析。 nm -D
似乎只显示 libodbc.so.2
的 libltdl
符号,而 objdump -p
在 NEEDED
部分似乎只有 libltdl.so.7
,所以 ldd
在这种情况下似乎没有打印出完全准确的信息(您的 grep
输出看起来与我看到的相似)。