15

I have a binary that uses a bunch of .so files.

bash-3.00$ file foo
foo: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.6.21, dynamically linked (uses shared libs), not stripped

But if I run ldd on this file, its not able to pick up the .so files the binary is dependent on.'

bash-3.00$ ldd foo
        not a dynamic executable
bash-3.00$

readelf does show the list of shared libraries used by the binary..

bash-3.00$ readelf -d  foo
Dynamic segment at offset 0x17c810 contains 70 entries:

  Tag        Type                         Name/Value
 0x00000001 (NEEDED)                     Shared library: [libdl.so.2]

Why is ldd not able to pick up the library dependencies in this case ?

2
  • 7
    You're probably on a 64-bit environment. Installing 32-bit compatibility libs should fix the issue. Commented May 29, 2013 at 7:33
  • 4
    Thanks. That was it. In ubuntu I am able to install ia32-libs and ldd worked. But in RedHat looks like there is no quick and easy way to install the 32 bit compatibility libs. Commented May 31, 2013 at 3:40

2 Answers 2

7

Like one of the comment says - you tried using ldd on 64 bit system to inspect a 32-bit ELF object. ldd uses the standard dynamic linker to trace the dependencies, so if your platform doesn't have the linker required by the ELF object being inspected, ldd fails. Readelf and objdump are more robust in these situations.

Sign up to request clarification or add additional context in comments.

Comments

5

Note that in Fedora 21, to get ldd to identify 32bit .so files, I had to install the following:

sudo yum install glibc.i686 libgcc.i686 libstdc++.i686 glibc-devel.i686

I'm not sure which one of those fixed the "not a dynamic executable" error I was seeing in ldd.

1 Comment

Here (on CentOS7) only yum install glibc.i686 was needed to make this work for the vxworks 6.9 deflate executable.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.