Linux 查看动态库依赖

查看动态库依赖3种方法

(1) $ ldd /bin/grep
        linux-gate.so.1 =>  (0xffffe000)
        libc.so.6 => /lib/libc.so.6 (0xb7eca000)
        /lib/ld-linux.so.2 (0xb801e000)
 
(2) $ LD_TRACE_LOADED_OBJECTS=1 /bin/grep
        linux-gate.so.1 =>  (0xffffe000)
        libc.so.6 => /lib/libc.so.6 (0xb7e30000)
        /lib/ld-linux.so.2 (0xb7f84000)
 
(3) $ LD_TRACE_LOADED_OBJECTS=1 /lib/ld-linux.so.2 /bin/grep
        linux-gate.so.1 =>  (0xffffe000)
        libc.so.6 => /lib/libc.so.6 (0xb7f7c000)
        /lib/ld-linux.so.2 (0xb80d0000)

也可以通过readelf 查看:
使用readelf,废话不多少,直接上例子:

$ readelf -d /bin/ls | grep "Shared library"
 0x0000000000000001 (NEEDED)             Shared library: [libselinux.so.1]
 0x0000000000000001 (NEEDED)             Shared library: [librt.so.1]
 0x0000000000000001 (NEEDED)             Shared library: [libacl.so.1]

另外LDD 的一个安全问题

动态链接器是操作系统的一部分,负责按照可执行程序运行时的需要装入与链接共享库。装入是指把共享库在永久存储上的内容复制到内存,链接是指填充跳转表(jump table)与重定位指针。
其中:
ld.so是Unix或类Unix系统上的动态链接器,常见的有两个变体:

ld.so针对a.out格式的二进制可执行文件
ld-linux.so针对ELF格式的二进制可执行文件

你可能感兴趣的:(app)