Chapter 7. 32-Bit and 64-Bit Applications in a 64-Bit System Environment

Contents

7.1. Runtime Support
7.2. Software Development
7.3. Software Compilation on Biarch Platforms
7.4. Kernel Specifications

Abstract

SUSE Linux is available for several 64-bit platforms. This does not necessarily mean that all the applications included have already been ported to 64-bit platforms. SUSE Linux supports the use of 32-bit applications in a 64-bit system environment. This chapter offers a brief overview of how this support is implemented on 64-bit SUSE Linux platforms. It explains how 32-bit applications are executed (runtime support) and how 32-bit applications should be compiled to enable them to run both in 32-bit and 64-bit system environments. Additionally, find information about the Kernel API and an explanation of how 32-bit applications can run under a 64-bit kernel.

SUSE Linux for the 64-bit platforms AMD64 and EM64T is designed so that existing 32-bit applications run in the 64-bit environment “out-of-the-box.” This support means that you can continue to use your preferred 32-bit applications without waiting for a corresponding 64-bit port to become available.


7.1. Runtime Support

[Important]Conflicts between Application Versions

If an application is available both for 32-bit and 64-bit environments, the parallel installation of both versions is bound to lead to problems. In such cases, decide on one of the two versions and install and use this.

To be executed correctly, every application requires a range of libraries. Unfortunately, the names for the 32-bit and 64-bit versions of these libraries are identical. They must be differentiated from each other in another way.

To retain compatibility with the 32-bit version, the libraries are stored at the same place in the system as in the 32-bit environment. The 32-bit version of libc.so.6 is located under /lib/libc.so.6 in both the 32-bit and 64-bit environments.

All 64-bit libraries and object files are located in directories called lib64. The 64-bit object files you would normally expect to find under /lib, /usr/lib, and /usr/X11R6/lib are now found under /lib64, /usr/lib64, and /usr/X11R6/lib64. This means that there is space for the 32-bit libraries under /lib, /usr/lib and /usr/X11R6/lib, so the filename for both versions can remain unchanged.

No subdirectories of the object directories whose data content does not depend on the word size are moved. For example, the X11 fonts are still found in the usual location under /usr/X11R6/lib/X11/fonts. This scheme conforms to the LSB (Linux Standards Base) and the FHS (File System Hierarchy Standard).