web-dev-qa-db-ja.com

Ubuntu 64ビットで32ビットアプリを実行する方法

Ubuntu 14.04と、32ビットの実行可能ファイルを含む現在のAndroid開発SDKをインストールしました。これらの32ビットバイナリを実行できないことがわかりました。 bashから起動しようとすると、エラーが発生します。

$ ./adb
bash: ./adb: No such file or directory

それはそこにあります:

$ ls -al ./adb
-rwxrwxrwx 1 thomas thomas 1231255 Jan 17 13:31 ./adb
$ file ./adb
./adb: ELF 32-bit LSB  executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.8, not stripped. Same symptom for all the other 32-bit tools in the Android SDK. 

昔は、64ビットUbuntuに32ビットライブラリをインストールするだけで32ビットをサポートできましたが、それはもう機能しないようです。

64ビットUbuntu 14.04で32ビットアプリを実行するにはどうすればよいですか?

129
Thomas Stuefe

64ビットマルチアーキテクチャUbuntuシステムで32ビット実行可能ファイルを実行するには、i386アーキテクチャを追加し、3つのライブラリパッケージlibc6:i386libncurses5:i386、およびlibstdc++6:i386をインストールする必要があります。

Sudo dpkg --add-architecture i386

または、Ubuntu 12.04 LTS(Precise Pangolin)以下を使用している場合は、これを使用します:

echo "foreign-architecture i386" > /etc/dpkg/dpkg.cfg.d/multiarch

次に:

Sudo apt-get update
Sudo apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386

失敗した場合も、

Sudo apt-get install multiarch-support

これらの手順の後、32ビットアプリケーションを実行できるようになります。

./example32bitprogram
180
Avinash Raj

「そのようなファイルやディレクトリはありません」は、バイナリを持っているときに表示される場合がありますが、いくつかのライブラリがありません。 build-essentialパッケージをインストールすると、lddコマンドが使用可能になります。このコマンドldd ./adb | grep notは、不足しているライブラリを表示します。 aptを使用してこれらのライブラリをi386 Archにインストールするだけです。このように:apt-get install libmissing:i386注意してください、いくつかのバグのあるパッケージは64ビットバージョンのfirを削除しようとします。

9
Barafu Albino

また、「adb」を使用する場合は、次のパッケージがあります。

Sudo apt-get install Android-tools-adb

また、約32ビットライブラリ-のみ:

Sudo apt-add-architecture i386

十分になります。

5
aastefanov

ZannaとAvinash Rajの優れた回答に加えて、gcc-multilibもインストールする必要がありました。

Sudo apt-get install gcc-multilib

おそらくこれは、64ビットで古いgccバージョンを実行したかったためです。

3
user2144067