20 32-Bit- und 64-Bit-Anwendungen in einer 64-Bit-Systemumgebung #
SUSE® Linux Enterprise Desktop ist für 64-Bit-Plattformen verfügbar. Die Entwickler haben nicht alle 32-Bit-Anwendungen auf 64-Bit-Systeme portiert. Dieses Kapitel bietet einen kurzen Überblick darüber, wie die 32-Bit-Unterstützung auf SUSE Linux Enterprise Desktop-64-Bit-Plattformen implementiert wird.
SUSE Linux Enterprise Desktop für die 64-Bit-Plattformen AMD64 und Intel 64 ist so konzipiert, dass bestehende 32-Bit-Anwendungen in der 64-Bit-Umgebung ausgeführt werden können – und zwar als „Sofortlösungen.“ 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.
SUSE Linux Enterprise Desktop unterstützt nicht die Kompilierung von 32-Bit-Anwendungen. Laufzeitunterstützung wird nur für 32-Bit-Binärdateien angeboten.
20.1 Laufzeitunterstützung #
Sollte eine Anwendung sowohl für 32-Bit-Umgebungen als auch für 64-Bit-Umgebungen verfügbar sein, verursacht die Installation von beiden Versionen möglicherweise Probleme. Entscheiden Sie sich in diesem Fall für die Installation einer Version, um potenzielle Laufzeitprobleme zu vermeiden.
Eine Ausnahme von dieser Regel ist PAM (Pluggable Authentication Modules). Während des Authentifizierungsprozesses verwendet SUSE Linux Enterprise Desktop PAM (austauschbare Authentifizierungsmodule) als Schicht für die Vermittlung zwischen Benutzer und Anwendung. Installieren Sie immer beide PAM-Versionen auf 64-Bit-Betriebssystemen, die auch 32-Bit-Anwendungen ausführen.
Für die korrekte Ausführung benötigt jede Anwendung eine Reihe von Bibliotheken. Da die Namen für die 32-Bit- und 64-Bit-Versionen dieser Bibliotheken identisch sind, müssen sie auf andere Weise voneinander unterschieden werden.
32-Bit- und 64-Bit-Bibliotheken sind am selben Standort gespeichert, um die Kompatibilität mit 32-Bit-Versionen aufrechtzuerhalten. 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
und /usr/lib
befanden, befinden sich nun unter /lib64
und /usr/lib64
. Unter /lib
und /usr/lib
ist also Platz für die 32-Bit-Bibliotheken, sodass der Dateiname für beide Versionen unverändert bleiben kann.
Wenn Dateninhalte von 32-Bit-Unterverzeichnissen unter /lib
nicht von der Wortgröße abhängig sind, werden sie nicht verschoben. Dieses Schema entspricht LSB (Linux Standards Base) und FHS (Filesystem Hierarchy Standard, Dateisystem-Hierarchiestandard).
20.2 Kernel-Spezifikationen #
Die 64-Bit-Kernel für AMD64/Intel 64 bieten sowohl eine 64-Bit- als auch eine 32-Bit-Kernel-ABI (binäre Anwendungsschnittstelle). Letztere ist mit der ABI für den entsprechenden 32-Bit-Kernel identisch. Dies bedeutet, dass die Kommunikation zwischen 32-Bit- und 64-Bit-Anwendungen mit 64-Bit-Kernel identisch ist.
Die 32-Bit-Systemaufrufemulation für 64-Bit-Kernel unterstützt nicht alle APIs, die von Systemprogrammen verwendet werden. Dies hängt von der Plattform ab. Daher müssen einige Anwendungen wie lspci
kompiliert werden.
Ein 64-Bit-Kernel kann nur 64-Bit-Kernel-Module laden. 64-Bit-Module müssen speziell für 64-Bit-Kernel kompiliert werden. Es ist nicht möglich, 32-Bit-Kernel-Module mit 64-Bit-Kernels zu verwenden.
Für bestimmte Anwendungen sind separate, Kernel-ladbare Module erforderlich. Sollten Sie eine 32-Bit-Anwendung in einer 64-Bit-Systemumgebung verwenden wollen, kontaktieren Sie den Anwendungsanbieter und SUSE. Stellen Sie sicher, dass die 64-Bit-Version des Kernel-ladbaren Moduls und die kompilierte 32-Bit-Version der Kernel-API für dieses Modul verfügbar sind.