【问题标题】:ldd hex number in parenthesesldd 括号内的十六进制数
【发布时间】:2012-11-01 21:04:21
【问题描述】:

在文件上执行ldd 时,它会返回一个包含在括号中的十六进制数字,用于它找到的每个库。

例如:

root@server> ldd wpa_supplicant
        linux-gate.so.1 =>  (0xb779b000)
        libnl.so.1 => /usr/lib/libnl.so.1 (0xb774d000)
        libssl.so.1.0.0 => not found
        libcrypto.so.1.0.0 => not found
        libdl.so.2 => /lib/i686/cmov/libdl.so.2 (0xb7748000)
        libc.so.6 => /lib/i686/cmov/libc.so.6 (0xb75ed000)
        libm.so.6 => /lib/i686/cmov/libm.so.6 (0xb75c7000)
        /lib/ld-linux.so.2 (0xb779c000)

如果十六进制数字不是可执行文件所链接的库之一,则可能会出现版本信息错误。

我有两个问题:

  1. 这个值是从哪里来的?
  2. 如何找出可执行文件正在寻找的十六进制值? (即它最初链接的那个)

【问题讨论】:

  • 我不确定,但我认为十六进制数字与库的版本没有任何关系 - 我认为这是该库的(建议/预期)地址执行时将映射到程序地址空间。要查看您需要的库版本,请尝试ldd -v
  • 如果这些值在您每次运行 ldd 时都没有改变,只需将该系统撕成碎片并使用真实、安全且最新的 Linux 系统。
  • 我认为还需要注意的是,这个十六进制地址可能会有所不同,如下所示:stackoverflow.com/questions/2217023/…

标签: linux ldd


【解决方案1】:

十六进制数字是各个库加载到的内存地址。更多解释请见https://stackoverflow.com/a/5130690/637284

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-02-08
    • 2020-03-15
    • 1970-01-01
    • 2013-05-28
    • 1970-01-01
    • 2011-12-09
    • 1970-01-01
    • 2013-12-31
    相关资源
    最近更新 更多