32ビットUbuntuシステムで64ビットアプリを実行する


10

私が見たすべての質問は、64ビットシステムで32ビットアプリを実行することに関するものです。

私は32ビットのUbuntu 12.04(実際にはそれをベースとする基本的なOS Luna)を実行していますが、64ビットのアプリを実行しようとしていますが、これを開くと拒否されます。ランニング:

./64bit_app.run

64bit_app.run私が実行しようとしている64ビットアプリはどこにある)結果は:

bash: ./64bit_app.run: no se puede ejecutar el fichero binario

これは、「バイナリファイルを実行/実行/開くことができません」に変換されます

実行できますか?32ビットシステムで64ビットアプリを実行することは可能ですか?もしそうなら、どうですか?


私はこれを試していませんが、ここに示されている解決策を試してみましたdpkg --add-architectureか、特に答えは説明していますか?私の知る限り、64の32と32の64で同じアプローチdpkg --add-architecture i386を使用できdpkg --add-architecture amd64ます。に変更してください。
terdon

1
あなた 64ビットのハードウェアを持っていますよね?(念のために)
苦労して

「どっちが断るか」?正確には?
Braiam、2014年

1
私がリンクした質問への回答を読んでくださいsudo dpkg --add-architecture amd64。最初に実行する必要があります。これは別のコマンドです。
terdon

1
@terdon申し訳ありません、私はそれを理解していませんでした。その行を実行すると、結果は次のようdpkg: error: opción --add-architecture desconocidadesconocidaなりunknownます。
ガブリエル

回答:


8

32ビットカーネルを搭載したLinux on x86_64で直接行うことはできません。64ビットコードを実行するには、64ビットカーネルが必要です。(注:カーネル。64ビットのカーネルで32ビットのユーザーランドを実行し、64ビットのバイナリのサポートをインストールできます。これがどれほど簡単かは、ディストリビューションによって異なります。ここではDebianの例です。)

一部の仮想化ソフトウェアはこれを実行でき(使用しているCPUのタイプに制限があります)、エミュレーターもそれを実行できます。ただし、ネイティブで実行するには、64ビットカーネルが必要です。

そこにあるほとんどの64ビットディストリビューションは32ビットサポート(デフォルトまたはインストール可能)を備えているため、同じOSで64ビットと32ビットの両方のバイナリを実行する必要がある場合は、これを使用する必要があります。


7

@Matの答えを拡張する:

はい、一部の仮想化ソフトウェアはそれを行うことができます。処理の主な障害は、32ビット環境では、CPUの64ビット機能が利用できず、64ビットカーネルの機能も利用できないことです。CPU 64ビットをサポートしいる場合でもそうです(2003年頃から、すべてがサポートされています)。

あなたの質問は暗黙のうちにあなた自身のシステム環境で64ビットアプリを実行したいことを述べています。それが本当にあなたの意図である場合、これはすべての仮想マシンベースのソリューションを除外します。私に知られている唯一の残りは、qemuのカーネルエミュレーションです。そう:

qemu-x86_64 ./your_64bit_app

現在のシステムで、現在のカーネルで、現在の環境変数でアプリ実行します。もちろん、それほど高速ではありません。CPUをエミュレートする必要があります。

Linux x86-64アプリのみをエミュレートできます。


どこかで、VMwareでもそれを実行できるかのように読んだことがありますが、これは答えに対する十分な確実な情報ではありません。Afaikの最近のVMwareは、ホスト側で64ビットのみです。
peterh-モニカを

1

ほとんどの64ビットアーキテクチャは、32ビットアーキテクチャの拡張機能です。それらは新しく、完全に異なっているので、32ビットアーキテクチャは明らかに64ビット版が何であるかを理解していません。彼らは、新しい機能が何であるか、新しいレジスタが何であるかを知りません...彼らが知っていても、彼らは新しいレジスタと機能にアクセスできません。その結果、32ビットカーネルは64ビットコンテキストを保存できません。これらすべてが、32ビットシステムで64ビットアプリを実行することを不可能にしています。

注意深く作成された64ビット対応の32ビットカーネルは64ビットアプリを実行できますが、コンテキストを節約するためにいくつかの64ビットコードが必要なため、純粋な32ビットカーネルではなくなります。

エミュレーター内で64ビットOSを実行するか、VT-xを使用して32ビットホスト内で64ビットゲスト仮想マシンを実行できます。しかし、技術的には、別の64ビットシステムで実行しています。32ビットLinuxカーネルで64ビットコードを直接実行することはまだ不可能です

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.