I've recently installed x64 Linux Mint 11, basically Ubuntu Natty. Since the install I've found that 32-bit applications which used to run on my Ubuntu system are rejected by my Mint 11 system. When I use the 'file' utility to check the binary, it correctly identifies it as a 32-bit elf, but I can't invoke the application.

I've tried starting it from bash and os.system a la python, to no avail, so I suspect that it must have something to do with 32-bit binary compatibility mode but my knowledge of that sub-system and how to enable it is limited, can anyone assist?

Thanks

link|improve this question

67% accept rate
+1 thx for asking. I just shifted from natty to Mint as well! – Alain Pannetier Jul 6 '11 at 13:14
feedback

2 Answers

up vote 2 down vote accepted

Install ia32-libs and make sure the application file is marked as executable, that should do the job! :)

link|improve this answer
Excellent, that worked perfectly, thanks!. I'm a little uncertain exactly why it worked though?, even if I was missing the libs before, ldd would have at least listed the required shared object files. Prior to installing ia32-libs, ldd would simply say that the binary was not a dynamically linked executable, is there some other secret sauce that the ia32-libs uses to make 32-bit apps run? – Gearoid Murphy Jul 6 '11 at 13:17
I'm not sure to be honest, but it's what worked for me! :) (p.s. Mark the answer if you like it!). :) – Ruairi Fullam Jul 6 '11 at 13:21
Interesting, I removed ia32-libs and the executable still worked (it's statically linked), after closer examination of the output from 'lsmod', I can see that there's a module called "binfmt_misc", this is what I was referring to, I pretty sure that's the primary requirement for supporting alternative binary formats, such as 32-bit or COFF exe's from Windows. – Gearoid Murphy Jul 6 '11 at 13:36
Interesting stuff, thanks for the info. :) – Ruairi Fullam Jul 6 '11 at 13:40
feedback

I don't know anything about MINT, but i have some experience with Debian: To run 32bit-binaries you need in almost any case the libraries supporting 32bit-binaries in a 64bit environment. Try

apt-get install ia32-libs

If theres apt-get on your system... (or try aptitude or whatever comes with MINT)

You can check which libraries are needed using ldd:

lofi:~# ldd /bin/ping
linux-vdso.so.1 =>  (0x00007ffff7dff000)
libc.so.6 => /lib/libc.so.6 (0x00007fd872ed1000)
/lib64/ld-linux-x86-64.so.2 (0x00007fd87323c000)

If there are any libraries missing, ldd will tell you.

link|improve this answer
When I used ldd on the 32-bit binary before I had ia32-libs installed, it returned an error saying that the binary was not a dynamically linked executable, I know that there's a kernel module built to handle different executable formats and I had anticipated that this was what needed to be configured in order to enable 32-bit binary compatibility. – Gearoid Murphy Jul 6 '11 at 13:31
feedback

Your Answer

 
or
required, but never shown

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