I used to use Slamd64 before, and it was easy. It came with all 32-bit libraries as well. Since official 64-bit Slackware is released, Slamd64 is no longer maintained. However, Slackware seems to be pure 64bit, so I cannot run 32bit apps. I searched the net and found some instructions, but they all require that I install some package manager (slapt-get, whatever). I'd like to do it without messing too much with the system. Where should I start?
How to run 32-bit applications on 64-bit Slackware
64bitslackware
Related Solutions
If you want to do this upgrade, I'd upgrade to Slackware-13.37 first, using the hints in UPGRADE.txt, and then upgrade 13.37 to -current once that is complete. During each release cycle, several packages are added and removed, so to move from 13.37 to current in the second step, you should read the Changelog closely to see what steps you might need to take to run current.
There will likely be Slackbuilds which do not work in the latest -current, especially since there has been an upgrade to a new GCC which breaks certain build scripts. Additionally, the usual warning that SlackBuilds.org does not support -current still applied. That being said, many people run current and use SlackBuilds without much problem. For programs that you have compiled yourself, the same caveats apply.
If you follow UPGRADE.txt and Changelog notes you should have a -current system running fairly easily. It's hard to say if you will have problems with your other applications without knowing what they are, but I shouldn't think it will be a major issue.
With regard to eclipse not being able to find adb
, etc, this because without the 32-bit shared libraries needed to run them on the system, they are not executable.
With regard to 32-bit libraries, the situation is fairly simple: you just need to install the appropriate 32-bit libs. On the 64-bit fedora 17 install I have here, the primary 64-bit libraries are in /usr/lib64 and optional 32-bit libs are in /usr/lib. So, if I call ldd
on on sdk/platform-tools/adb:
linux-gate.so.1 => (0xf7791000)
librt.so.1 => /lib/librt.so.1 (0xf776c000)
libncurses.so.5 => /lib/libncurses.so.5 (0xf7747000)
libpthread.so.0 => /lib/libpthread.so.0 (0xf772d000)
libstdc++.so.6 => /lib/libstdc++.so.6 (0xf7644000)
libm.so.6 => /lib/libm.so.6 (0xf7618000)
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0xf75fb000)
libc.so.6 => /lib/libc.so.6 (0xf7449000)
/lib/ld-linux.so.2 (0xf7792000)
libdl.so.2 => /lib/libdl.so.2 (0xf7444000)
libtinfo.so.5 => /lib/libtinfo.so.5 (0xf7424000)
Notice these are all in /lib, which is a symlink to /usr/lib (not /usr/lib64). Look:
»file /lib/libc.so.6
/lib/libc.so.6: symbolic link to `libc-2.15.so'
»file /lib/libc-2.15.so
/lib/libc-2.15.so: ELF 32-bit LSB shared object [...]
A 32-bit standard C library. What you can do is go through the 32-bit sdk tools and check to see what they are linked against with ldd
. I don't have an example at hand, but if something is missing ldd
reports something like:
libc.so.6 => ??????
First, tho, for ldd to work you will need the 32-bit loader that comes with the 32-bit glibc (without this, ldd will call it a non-executable file and tell you nothing):
»yum search glibc
glibc.i686 : The GNU libc libraries
glibc.x86_64 : The GNU libc libraries
That's truncated, but the x86_64 package is what you have already; the i686 is the 32-bit version. So just install that.
You do not need any of the 'devel' packages, as nothing gets compiled. Beyond that, educated guesses and yum whatprovides
/ yum search
should help (looking at the list for adb, there's also 32-bit versions of the C++ lib, ncurses, pthreads, and a I few things I don't know).
Quick tip about using whatprovides
:
»yum whatprovides libtinfo
No matches found.
»yum whatprovides libtinfo.so.5
[2 matches]
»yum whatprovides "*/libtinfo.so.5"
[4 matches]
;)
Best Answer
It's all in this readme: http://connie.slackware.com/~alien/multilib/
Simply follow instructions from the README:
Now you may install existing 32 bit packages or compile 32 bit programs.