当在一个文件上执行 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)
如果十六进制数不是可执行文件曾经链接到的库之一,则可能会出现版本信息错误。
我有两个问题:
- 这个值(value)从何而来?
- 如何找出可执行文件正在寻找的十六进制值? (即它最初链接的那个)
最佳答案
十六进制数是相应库加载到的内存地址。参见 https://stackoverflow.com/a/5130690/637284进一步解释。
关于linux - 括号中的 ldd 十六进制数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13185448/