Um bei einer Doppelarchitektur Binärdateien für die jeweils andere Architektur zu entwickeln, müssen die entsprechenden Bibliotheken für die zweite Architektur zusätzlich installiert werden. Diese Pakete heißen rpmname-32bit
oder rpmname-x86
(für ia64), wenn die zweite Architektur eine 32-Bit-Architektur ist, oder rpmname-64bit
, wenn die zweite Architektur eine 64-Bit-Architektur ist. Außerdem benötigen Sie die entsprechenden Header und Bibliotheken aus den rpmname-devel
-Paketen und die Entwicklungsbibliotheken für die zweite Architektur aus rpmname-devel-32bit
oder rpmname-devel-64bit
.
Zum Kompilieren eines Programms, das libaio auf einem System verwendet, dessen zweite Architektur eine 32-Bit-Architektur ist (x86_64 oder s390x), benötigen Sie beispielsweise die folgenden RPMs:
32-Bit-Laufzeitpaket
Header und Bibliotheken für die 32-Bit-Entwicklung
64-Bit-Laufzeitpaket
Header und Bibliotheken für die 64-Bit-Entwicklung
Die meisten Open Source-Programme verwenden eine autoconf-basierte Programmkonfiguration. Um mit autoconf ein Programm für die zweite Architektur zu konfigurieren, überschreiben Sie die normalen Compiler- und Linker-Einstellungen von autoconf, indem Sie das Skript configure mit zusätzlichen Umgebungsvariablen ausführen.
Das folgende Beispiel bezieht sich auf ein x86_64-System mit x86 als zweiter Architektur. Beispiele für s390x mit s390 als zweiter Architektur oder ppc64 mit ppc als zweiter Architektur würden ähnlich aussehen. Dieses Beispiel gilt nicht für ia64-Systeme, wo Sie keine 32-Bit-Pakete erstellen.
![]() | |
Bei Verwendung von s390 als zweiter Architektur müssen Sie statt |
Verwenden Sie den 32-Bit-Compiler:
CC="gcc -m32"
Weisen Sie den Linker an, 32-Bit-Objekte zu verarbeiten (verwenden Sie stets gcc als Linker-Frontend):
LD="gcc -m32"
Legen Sie den Assembler für die Erstellung von 32-Bit-Objekten fest:
AS="gcc -c -m32"
Legen Sie fest, dass die Bibliotheken für libtool usw. aus /usr/lib
stammen sollen:
LDFLAGS="-L/usr/lib"
Legen Sie fest, dass die Bibliotheken im Unterverzeichnis lib
gespeichert werden sollen:
--libdir=/usr/lib
Legen Sie fest, dass die 32-Bit-X-Bibliotheken verwendet werden sollen:
--x-libraries=/usr/X11R6/lib/
Nicht alle diese Variablen werden für jedes Programm benötigt. Passen Sie sie an das entsprechende Programm an.
Ein Beispiel für einen configure-Aufruf zur Kompilierung einer nativen 32-Bit-Anwendung auf x86_64, ppc64 oder s390x könnte wie folgt aussehen:
CC="gcc -m32" \ LDFLAGS="-L/usr/lib;" \ .configure \ --prefix=/usr \ --libdir=/usr/lib make make install