Possible Duplicate:
Can't execute some binaries in chroot environment (zsh: Not found)

Today I ran into something that has me stumped. A co-worker is working with a specific pre-compiled binary he downloaded (available here). On the Ubuntu 10.04 LTS Server he's working on, attempting to execute this file yields file-not-found, even with permissions set right.

And yet, when I attempt the same thing from OpenSUSE 11.4, it runs just fine. Running file on it gives me:

ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.15, stripped

Both the Ubuntu and OpenSUSE boxes are 64-bit installs, and file returns the same information on both machines.

Which looks just fine to me. And on the opensuse box, LDD even gives me a short list of library files. Hand checking, all of those specified files also exist on the Ubuntu server. Strace output is different though:


execve("./trid", ["./trid"], [/* 122 vars */]) = 0

Ubuntu (giving full path does not change result):

execve("./trid", ["./trid"], [/* 19 vars */]) = -1 ENOENT (No such file or directory)

What can cause a file like this to not be executable in this way?



ldd ./trid

both on the openSuse and Ubuntu system.

I suspect you'll find that the latter is missing a library file.

  • That was my first guess. ldd on Ubuntu doesn't give anything terribly useful. Just "File is not a dynamic executable". – sysadmin1138 Sep 27 '11 at 1:26
  • Sounds like the Ubuntu install somehow doesn't know what to do with 32-bit software. Which is odd since last time I checked x86-compatibility libraries were part of amd64's base files. – Shadur Sep 27 '11 at 8:40
  • Turns out the libc6-i386 package wasn't installed. This instance was a 'minimal server' install, so lacked some packages. – sysadmin1138 Sep 27 '11 at 23:46
  • Yeah, that'll do it. – Shadur Sep 28 '11 at 5:01

Not the answer you're looking for? Browse other questions tagged or ask your own question.