سؤال

When executing ldd on a file, it returns a hex number in parentheses vor every library it found.

For example:

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)

If the hex number is not the one of the library the executable once got linked against, a version information error may occur.

I got two questions:

  1. Where does this value originate?
  2. How can I find out which hex value the executable is looking for? (i.e. the one it originally got linked against)
هل كانت مفيدة؟

المحلول

The hexadecimal numbers are the memory addresses the respective library gets loaded into. See https://stackoverflow.com/a/5130690/637284 for further explanation.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top