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

Table of Contents

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

Abstract

SUSE LINUX Enterprise Server 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 Server supports the use of 32-bit applications in a 64-bit system environment. This section offers a brief overview of how this support is implemented on 64-bit SUSE LINUX Enterprise Server platforms.

SUSE LINUX Enterprise Server for the ipf, ppc64, s390x, sparc64, amd64, and em64t 64-bit platforms 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 ipf, ppc for ppc64, s390 for s390x, and x86 for amd64 and em64t. 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 in 32-bit mode, but you can use 64-bit applications.

To understand 32-bit support, consider the following issues:

Runtime Support

How can 32-bit applications be executed?

Development Support

How should 32-bit applications be compiled to enable them to run both in 32-bit and 64-bit system environments?

Kernel API

How can 32-bit applications run under a 64-bit kernel?

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. The same approach is used for the 64-bit platforms ppc64, s390x, sparc64, amd64, and em64t: 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 file name 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).

▪ ipf
The 64-bit libraries for both ipf and the 64-bit alpha platform are located in the standard lib directories. In such cases there is neither a lib64 directory nor a lib32 directory. Instead, ipf 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. ▪