代码之家  ›  专栏  ›  技术社区  ›  tristan

ldd在x86 Linux上显示不同的地址

  •  10
  • tristan  · 技术社区  · 14 年前

    我正在使用 ldd 在Fedora/x86上显示动态库,每次使用时都显示不同的结果。

    这是预期的吗?或者有什么解释?

    我记得它在PPC/Linux上显示了一个固定的结果。

    `ldd /bin/ls
     linux-gate.so.1 =>  (0x00e5b000)
     librt.so.1 => /lib/librt.so.1 (0x00c0c000)
     libselinux.so.1 => /lib/libselinux.so.1 (0x0095d000)
     libcap.so.2 => /lib/libcap.so.2 (0x00110000)
     libacl.so.1 => /lib/libacl.so.1 (0x00331000)
     libc.so.6 => /lib/libc.so.6 (0x00115000)
     libpthread.so.0 => /lib/libpthread.so.0 (0x00bc9000)
     /lib/ld-linux.so.2 (0x009d2000)
     libdl.so.2 => /lib/libdl.so.2 (0x00680000)
     libattr.so.1 => /lib/libattr.so.1 (0x00447000)
    ldd /bin/ls
     linux-gate.so.1 =>  (0x00f76000)
     librt.so.1 => /lib/librt.so.1 (0x00494000)
     libselinux.so.1 => /lib/libselinux.so.1 (0x0095d000)
     libcap.so.2 => /lib/libcap.so.2 (0x009e9000)
     libacl.so.1 => /lib/libacl.so.1 (0x00365000)
     libc.so.6 => /lib/libc.so.6 (0x00732000)
     libpthread.so.0 => /lib/libpthread.so.0 (0x00b61000)
     /lib/ld-linux.so.2 (0x002a7000)
     libdl.so.2 => /lib/libdl.so.2 (0x002f0000)
     libattr.so.1 => /lib/libattr.so.1 (0x00447000)`
    
    1 回复  |  直到 12 年前
        1
  •  15
  •   Ignacio Vazquez-Abrams    14 年前

    Fedora使用 address space randomization 作为其各种安全措施的一部分。 ldd 通过实际加载共享对象并显示它们的结束位置来工作。把这两个结果放在一起就得到了给定的观测结果。