Linux 32 bit and 64 bit

For a PC architecture Linux supports 64 bit systems as well as the traditional 32 bit systems. 64 bit hardware can run both 32 bit and 64 bit applications.

Surprise, no clear statement can be made that a 64 bit system runs faster than a 32 bit system, since it depends on the applications running.

Important

One clear and big plus for 64 bit is that it can address more Giga bytes of RAM than 32 bit machines. On 32 bit machine the disappointing fact can arise that the complete range of installed RAM can not be used. Modern PC's having more than 4Giga Byte of RAM should therefore run on 64 Byte Linux. dmesg | grep Memory will show what the system has detected on boot. For PC's up to 3Giga Byte of RAM this should not make a difference.

If you have a binary and you do not know what you have, type:

file /opt/serna-free-4.4/bin/serna.bin

/opt/serna-free-4.4/bin/serna.bin: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.2.0, stripped

Installing a 32bit system to run 32 bit binaries is obvious a simple hassle free solution.

However there are different ways to run 32 bit applications on a 64bit system.

One thing is that the 64 bit kernel must be configured to support 32 bit applications. However this is not enough, the more complicated issue are the libraries. A 32 bit application does not work together with a 64bit library.

One way out is installing a complete 32bit system (root directory tree) and then chroot into it. There is some support available to not doing it all manual. However this sounds really like maintaining two systems running on one hardware.

An other approach is multilib, that installs the for the 32bit applications required libs two times /usr/lib32 for the 32bit libraries, /usr/lib64 for the 64bit libraries and finally having a link from /usr/lib to /usr/lib64 for the 64bit applications that do not have to care about.

ldd /opt/serna-free-4.4/bin/serna.bin shows all libraries that are required to run the 32bit application. Consequently those libraries must be available (or installed) under /usr/lib32

However packages are usually be installed and not single libraries. Therefore start the 32bit application in the console and observe the errors due to missing libraries. Then find out what package contains this library and install this package supporting 32bit.

For Gentoo Linux see:

https://wiki.gentoo.org/wiki/AMD64/FAQ

equery belongs <library> shows what package contains the missing library.

emerge -1 pv <library> shows the use flags indication how the libraries are getting installed.

Then adding to /etc/portage/package.use the following

<package-name> abi_x86-32

emerge -1 pv <library> should now show the new use flags and its dependent packages.

Temerge -1 --autounmask-write <library>

dispatch-conf

emerge -1 <library>

and repeat those steps until all missing libraries are available as 32 bit. Since Gentoo checks the dependencies not many loops should be required.

After knowing what is required all known should be added to ebuild installing the binary with the required library and dependencies.

RDEPEND="${DEPEND}
sys-apps/util-linux[abi_x86_32(-)]
sys-libs/zlib[abi_x86_32(-)]
x11-libs/libICE[abi_x86_32(-)]"

Linurs Servernest startpage