An exception to this rule is PAM (pluggable authentication modules). SUSE
Linux Enterprise Desktop uses PAM in the authentication process as a layer that
mediates between user and application. On a 64-Bit operating system that also
runs 32-Bit applications it is necessary to always install both versions of a PAM
module.
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 and /usr/lib are now
found under /lib64 and /usr/lib64. This means that there is space for the 32-bit
libraries under /lib and /usr/lib, so the filename for both versions can remain
unchanged.
Subdirectories of 32-bit /lib directories which contain data content that does not de-
pend on the word size are not moved. This scheme conforms to LSB (Linux Standards
Base) and FHS (File System Hierarchy Standard).
8.2 Software Development
A biarch development tool chain allows generation of 32-bit and 64-bit objects. The
default is to compile 64-bit objects. It is possible to generate 32-bit objects by using
special flags. For GCC, this special flag is -m32.
All header files must be written in an architecture-independent form. The installed 32-
bit and 64-bit libraries must have an API (application programming interface) that
matches the installed header files. The normal SUSE Linux Enterprise Desktop envi-
ronment is designed according to this principle. In the case of manually updated libraries,
resolve these issues yourself.
74
Administration Guide