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

Contents

19.1. Runtime Support
19.2. Software Development
19.3. Software Compilation on Biarch Platforms
19.4. Kernel Specifications

SUSE® Linux Enterprise 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 Enterprise 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 Enterprise 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.

[Note]31-Bit Applications on IBM System z:

s390 on IBM System z uses a 31-bit environment. References to 32-bit applications in the following also apply to 31-bit applications.

SUSE Linux Enterprise for the 64-bit platforms ia64, ppc64, s390x, and x86_64 is designed so that existing 32-bit applications run in the 64-bit environment “out-of-the-box.The corresponding 32-bit platforms are x86 for ia64, ppc for ppc64, s390 for s390x, and x86 for x86_64. 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. The current ppc64 system runs most applications in 32-bit mode, but you can run 64-bit applications.

19.1. Runtime Support

[Important]Conflicts between Application Versions

If an application is available both for 32-bit and 64-bit environments, 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.

The same approach is used for the 64-bit platforms ppc64, s390x, and x86_64: 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.

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

►ipf: The 64-bit libraries for ia64 are located in the standard lib directories. In such cases, there is neither a lib64 directory or a lib32 directory. ia64 executes the 32-bit x86 code under an emulation. A set of basic libraries is installed in /emul/ia32-linux/lib and /emul/ia32-linux/usr/X11R6/lib.