32-Bit- und 64-Bit-Anwendungen in einer 64-Bit-Systemumgebung

Inhaltsverzeichnis

19.1. Laufzeitunterstützung
19.2. Software-Entwicklung
19.3. Software-Kompilierung auf Doppelarchitektur-Plattformen
19.4. Kernel-Spezifikationen

SUSE Linux Enterprise® ist für mehrere 64-Bit-Plattformen verfügbar. Das bedeutet jedoch nicht unbedingt, dass alle enthaltenen Anwendungen bereits auf 64-Bit-Plattformen portiert wurden. SUSE Linux Enterprise unterstützt die Verwendung von 32-Bit-Anwendungen in einer 64-Bit-Systemumgebung. Dieses Kapitel bietet einen kurzen Überblick über die Implementierung dieser Unterstützung auf SUSE Linux Enterprise-64-Bit-Plattformen. Es wird erläutert, wie 32-Bit-Anwendungen ausgeführt werden (Laufzeitunterstützung) und wie 32-Bit-Anwendungen kompiliert werden sollten, damit sie sowohl in 32-Bit- als auch in 64-Bit-Systemanwendungen ausgeführt werden können. Außerdem finden Sie Informationen zur Kernel-API und es wird erläutert, wie 32-Bit-Anwendungen unter einem 64-Bit-Kernel ausgeführt werden können.

[Note]31-Bit-Anwendungen auf IBM-System z:

s390 auf IBM-System z verwendet eine 31-Bit-Umgebung. Verweise auf 32-Bit-Anwendungen gelten im Folgenden auch für 31-Bit-Anwendungen.

SUSE Linux Enterprise für die 64-Bit-Plattformen ia64, ppc64, s390x und x86_64 ist so konzipiert, dass bestehende 32-Bit-Anwendungen sofort in der 64-Bit-Umgebung„ ausgeführt werden können.Die entsprechenden 32-Bit-Plattformen sind x86 für ia64, ppc für ppc64, s390 für s390x und x86 für x86_64. Diese Unterstützung bedeutet, dass Sie weiterhin Ihre bevorzugten 32-Bit-Anwendungen verwenden können und nicht warten müssen, bis ein entsprechender 64-Bit-Port verfügbar ist. Das aktuelle ppc64-System führt die meisten Anwendungen im 32-Bit-Modus aus, es können aber auch 64-Bit-Anwendungen ausgeführt werden.

Laufzeitunterstützung

[Important]Konflikte zwischen Anwendungsversionen

Wenn eine Anwendung sowohl für 32-Bit- als auch für 64-Bit-Umgebungen verfügbar ist, führt die parallele Installation beider Versionen zwangsläufig zu Problemen. Entscheiden Sie sich in diesen Fällen für eine der beiden Versionen und installieren und verwenden Sie nur diese.

Für eine korrekte Ausführung benötigt jede Anwendung eine Reihe von Bibliotheken. Leider sind die Namen für die 32-Bit- und 64-Bit-Versionen dieser Bibliotheken identisch. Sie müssen auf andere Weise voneinander unterschieden werden.

Derselbe Ansatz wird für die 64-Bit-Plattformen ppc64, s390x und x86_64 verwendet: Um die Kompatibilität mit der 32-Bit-Version beizubehalten, werden die Bibliotheken an derselben Stelle im System gespeichert wie in der 32-Bit-Umgebung. Die 32-Bit-Version von libc.so.6 befindet sich sowohl in der 32-Bit- als auch in der 64-Bit-Umgebung unter /lib/libc.so.6.

Alle 64-Bit-Bibliotheken und Objektdateien befinden sich in Verzeichnissen mit dem Namen lib64. Die 64-Bit-Objektdateien, die sich normalerweise unter /lib, /usr/lib und /usr/X11R6/lib befinden, werden nun unter /lib64, /usr/lib64 und /usr/X11R6/lib64 gespeichert. Unter /lib, /usr/lib und /usr/X11R6/lib ist also Platz für die 32-Bit-Bibliotheken, sodass der Dateiname für beide Versionen unverändert bleiben kann.

Unterverzeichnisse von 32-Bit-Verzeichnissen namens /lib, deren Dateninhalt nicht von der Wortgröße abhängt, werden nicht verschoben. Beispielsweise befinden sich die X11-Schriftarten noch immer am gewohnen Ort unter /usr/X11R6/lib/X11/fonts. Das Schema entspricht LSB (Linux Standards Base) und FHS (File System Hierarchy Standard).

►ipf: Die 64-Bit-Bibliotheken für ia64 befinden sich in den standardmäßigen lib-Verzeichnissen. In solchen Fällen gibt es weder das Verzeichnis lib64 noch das Verzeichnis lib32. ia64 führt den 32-Bit-x86-Code unter einer Emulation aus. Eine Reihe von Basisbibliotheken wird unter /emul/ia32-linux/lib und /emul/ia32-linux/usr/X11R6/lib installiert.