64ビットシステム環境での32ビットと64ビットのアプリケー ション

目次

19.1. ランタイムサポート
19.2. ソフトウェア開発
19.3. biarchプラットフォームでのソフトウェアのコンパイル
19.4. カーネル仕様

SUSE Linux EnterpriseŽは、複数の 64ビットプラットフォームで利用できます。 ただし、付属のすべてのアプリケーションが64ビットプラットフォームに移植されている訳ではありません。 SUSE Linux Enterpriseは、32ビットアプリケーションの64ビットシステム環境での使用をサポートしています。 この章では、 64ビットSUSE Linux Enterpriseプラットフォームでこのサポートがどのように行われているかについて簡潔に説明します。 また、32ビットアプリケーションの実行方法(ランタイムサポート)、および32ビットと64ビットのシステム環境の両方で実行できるように32ビットアプリケーションをコンパイルする方法について説明します。 さらに、カーネルAPIに関する情報、および32ビットアプリケーションを64ビットカーネルで実行する方法についても説明します。

[Note]IBM System zの31ビットアプリケーション:

IBM System zでのs390は31ビット環境を使用します。次に示す32ビットアプリケーションへの参照は、31ビットアプリケーションにも適用されます。

64ビットプラットフォーム ia64、ppc64、s390x、x86_64に対応したSUSE Linux Enterpriseは、既存の32ビットアプリケーションが64ビット環境で「出荷してすぐに」動作するように設計されています。対応する 32ビットプラットフォームには、ia64のx86、ppc64のppc、s390xのs390、およびx86__64のx86があります。このサポートにより、対応する 64ビット移植版が使用可能になるのを待たなくても、使用したい 32ビットアプリケーションを引き続き使用できます。現在のppc64システムは、大部分のアプリケーションを 32ビットモードで実行しますが、 64ビットアプリケーションを実行することもできます。

ランタイムサポート

[Important]アプリケーションバージョン間の競合

アプリケーションが32ビットと64ビットの両方の環境で使用可能な場合に、両方のバージョンを同時にインストールすると問題が生じます。そのような場合は、2つのバージョンのどちらかだけをインストールして使用してください。

正しく実行するために、すべてのアプリケーションにはライブラリが必要です。 しかし残念ながら、32ビットバージョンと64ビットバージョンのライブラリの名前は同じです。そのため、ライブラリを別の方法で区別する必要があります。

64ビットプラットフォームppc64、s390x、およびx86_64でも、同じ手法が使用されます。 32ビット版との互換性を維持するために、 32ビット環境と同じ場所にライブラリが保存されます。 libc.so..6の 32ビットバージョンは、 32ビットと 64ビットのどちらの環境でも/lib/libc.so..6の下にあります。

64ビットのすべてのライブラリとオブジェクトファイルは、lib64というディレクトリにあります。 通常、/lib/usr/lib、および/usr/X11R6/libの下にあると想定されている 64ビットのオブジェクトファイルは、/lib64/usr/lib64、および/usr/X11R6/lib64の下にあります。 つまり、両方のバージョンのファイル名を変更しなくても済むように、 32ビットライブラリ用の領域は/lib/usr/lib、および/usr/X11R6/libの下になっています。

データの内容がワードサイズに依存しない、 32ビットの/libディレクトリ中のサブディレクトリは移動されません。 たとえば、X11フォントは、これまでどおり/usr/X11R6/lib/X11/fontsの下の通常の場所にあります。 このスキームは、LSB (Linux Standards Base)とFHS (File System Hierarchy Standard)に準拠しています。

►ipf: ia 64用の64ビットライブラリは、標準のlibディレクトリにあります。この場合、lib64ディレクトリやlib32ディレクトリは存在しません。ia64は、 32ビットのX86コードをエミュレーションで実行します。 基本的なライブラリセットは、/emul/ia32-linux/libおよび/emul/ia32-linux/usr/X11R6/libにインストールされます。