Question

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)
Was it helpful?

Solution

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

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top