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

目次

7.1. ランタイムサポート
7.2. ソフトウェア開発
7.3. biarchプラットフォームでのソフトウェアのコンパイル
7.4. カーネル仕様

概要

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

64ビットプラットフォームAMD64、およびEM64Tに対応したSUSE Linuxは、既存の32ビットアプリケーションが64ビット環境で「出荷してすぐに」動作するように設計されています。このサポートにより、対応する64ビット移植版が使用可能になるのを待たなくても、使用したい32ビットアプリケーションを引き続き使用できます。


7.1 ランタイムサポート

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

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

正しく実行するために、すべてのアプリケーションにはライブラリが必要です。しかし残念ながら、32ビットバージョンと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の下になっています。

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