To develop binaries for the other architecture on a biarch architecture, the
respective libraries for the second architecture must additionally be
installed. These packages are called rpmname-32bit or
rpmname-x86 (for ia64) if the
second architecture is a 32-bit architecture or rpmname-64bit if the second architecture is
a 64-bit architecture. You also need the respective headers and
libraries from the rpmname-devel
packages and the development libraries for the second architecture from
rpmname-devel-32bit or rpmname-devel-64bit.
For example, to compile a program that uses libaio on a system whose second architecture is a 32-bit architecture (x86_64 or s390x), you need the following RPMs:
32-bit runtime package
Headers and libraries for 32-bit development
64-bit runtime package
64-bit development headers and libraries
Most open source programs use an autoconf-based program configuration. To use autoconf for configuring a program for the second architecture, overwrite the normal compiler and linker settings of autoconf by running the configure script with additional environment variables.
The following example refers to an x86_64 system with x86 as the second architecture. Examples for s390x with s390 as the second architecture or ppc64 with ppc as the second architecture would be similar. This example does not apply to ia64 where you do not build 32-bit packages.
![]() | Tip |
|---|---|
When using s390 as second architecture, you have to use
| |
Use the 32-bit compiler:
CC="gcc -m32"
Instruct the linker to process 32-bit objects (always use gcc as the linker front-end):
LD="gcc -m32"
Set the assembler to generate 32-bit objects:
AS="gcc -c -m32"
Determine that the libraries for libtool and so
on come from /usr/lib:
LDFLAGS="-L/usr/lib"
Determine that the libraries are stored in the
lib subdirectory:
--libdir=/usr/lib
Determine that the 32-bit X libraries are used:
--x-libraries=/usr/X11R6/lib/
Not all of these variables are needed for every program. Adapt them to the respective program.
An example configure call to compile a native 32-bit application on x86_64, ppc64, or s390x could appear as follows:
CC="gcc -m32" \
LDFLAGS="-L/usr/lib;" \
.configure \
--prefix=/usr \
--libdir=/usr/lib
make
make install