• ベストアンサー

Linux64bit版での32bit用ソフト

Linuxにおいて、 64bit版では 32bit用のソフトが動かないことがある、 という文章を時々目にします。 x86_64(amd64)は定義が32bit互換ということでしたので いつも x86_64 を選んでインストールしています。 64bit版では 32bit用のソフトが動かないことがある、 というのはSPARCやMIPSなどの64bit版 においての話であって、 x86_64 では関係ないと思っていいのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • anmochi
  • ベストアンサー率65% (1332/2045)
回答No.1

> x86_64 では関係ないと思っていいのでしょうか? いや、x86_64もその辺は影響を受ける。とはいえ、よっぽどマイナーなソフトウェアでない限りは大丈夫だと言えよう。 現在の多くのLinuxディストリビューション(DebianやRedhat Enterprise Linuxなど)も32ビットと64ビットでは32ビット向けに提供されるランタイムライブラリが違う(多分。一つ一つ私が調べた訳ではないので正確なところは分からない。)。 例えばCentOS 6.4 x86_64をインストールしてyum list glibcとすると、 glibc.i686 2.12-1.107.el6_4.5 updates glibc.x86_64 2.12-1.107.el6_4.5 updates という風にupdatesリポジトリに32ビットGLIBCと64ビットGLIBCが提供されている事が分かる。ついでに、i686となっているのでこれは32ビットCPUの中でもi386やi486やi586(初代PentiumとMMX Pentium)では動かないという事も分かる。 この場合、両方のglibcを入れると、純粋にGLIBCのみに依存するプログラムは32ビットでも64ビットでも実行する事ができる。64ビットカーネル上でね。 で、opensslとかaprとか主要なライブラリは大抵32/64で提供されているけど、マイナーなランタイムライブラリは64ビットのものしか提供されていない事もある。なので、そのようなマイナーなライブラリが必要なマイナーなプログラムは実行する事ができない。32ビットのプログラムは64ビットのライブラリを呼び出す事はできないのだね。 この辺の事情はCPUがSPARCだろうとIntel Coreだろうと、またOSがLinuxだろうとSolarisだろうとWindowsだろうと全く変わらない。64ビットCPUで64ビットOSを使っている時に32ビットのプログラムを実行する時には32ビットのライブラリが必要になって、それが無い場合は実行できないという訳。

noname#197334
質問者

お礼

詳細な回答ありがとうございます。 おかげさまでよく理解できました! 64bit版OSをインストールしておけば、 よほど古いソフトを使おうとしない限りは 64bit版ライブラリがないという事態には遭遇しないでしょうから、 心配はなさそうですね。 まあしかし、よく考えると 万一の時のためには サポート期間の長い32bit版OSを少なくとも一つ インストールしておけばいい話なのかもしれません。 何にせよ、x86_64版を安心して使っていけます。 感謝感謝です。

関連するQ&A