2

I am trying to figure out why Eclipse is complaining about being unable to find a library. I've managed to reproduce/reduce the java problem to:

$ ldd /home/jhendrix/.swt/lib/linux/x86/libswt-pi-gtk-3833.so
        linux-gate.so.1 =>  (0xf76fa000)
        libgtk-x11-2.0.so.0 => not found
        libgthread-2.0.so.0 => /usr/lib/i386-linux-gnu/libgthread-2.0.so.0 (0xf7674000)
        libXtst.so.6 => not found
        libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xf74c9000)
        libglib-2.0.so.0 => /lib/i386-linux-gnu/libglib-2.0.so.0 (0xf73cd000)
        /lib/ld-linux.so.2 (0xf76fb000)
        libpcre.so.3 => /lib/i386-linux-gnu/libpcre.so.3 (0xf738d000)
        libpthread.so.0 => /lib/i386-linux-gnu/libpthread.so.0 (0xf7372000)
        librt.so.1 => /lib/i386-linux-gnu/librt.so.1 (0xf7368000)

And indeed java is complaining about being unable to locate libgtk-x11-2.0.so.0. But when I check ldconfig, the library is right there:

$ sudo ldconfig -v 2>&1 | grep -E '(libgtk-x11-2.0.so.0|libXtst.so.6)'
        libXtst.so.6 -> libXtst.so.6.1.0
        libgtk-x11-2.0.so.0 -> libgtk-x11-2.0.so.0.2400.13

I suspect it has something to do with running a 64 bit system, running a 32-bit customized Eclipse build (Texas Instruments Code Composer 5):

$ locate libgtk-x11-2.0.so.0 libXtst.so.6
/usr/lib/x86_64-linux-gnu/libXtst.so.6
/usr/lib/x86_64-linux-gnu/libXtst.so.6.1.0
/usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0
/usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0.2400.13

I think the question is: How can I install the 32 bit version for this library on a 64 bit Ubuntu 12.10? And secondary: Is it likely this will solve the problem?

3
  • See: help.ubuntu.com/community/MultiArch
    – jordanm
    Jan 18, 2013 at 22:24
  • @jordanm your hint put me on the right track, thnx! I executed $ sudo apt-get install libgtk2.0-0:i386 libxtst6:i386 and Eclipse now successfully runs. You should consider writing an answer.
    – jippie
    Jan 18, 2013 at 22:34
  • Added as an answer.
    – jordanm
    Jan 18, 2013 at 22:38

1 Answer 1

6

Modern versions of 64bit Ubuntu have dpkg multi-arch enabled by default. You can install 32bit packages by adding :i386 to the end of the package name. You can find more information on multi-arch in Ubuntu here.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .