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ビットアプリを実行するにはどうすればよいですか?
64ビットマルチアーキテクチャUbuntuシステムで32ビット実行可能ファイルを実行するには、i386
アーキテクチャを追加し、3つのライブラリパッケージlibc6:i386
、libncurses5: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
「そのようなファイルやディレクトリはありません」は、バイナリを持っているときに表示される場合がありますが、いくつかのライブラリがありません。 build-essential
パッケージをインストールすると、ldd
コマンドが使用可能になります。このコマンドldd ./adb | grep not
は、不足しているライブラリを表示します。 aptを使用してこれらのライブラリをi386 Archにインストールするだけです。このように:apt-get install libmissing:i386
注意してください、いくつかのバグのあるパッケージは64ビットバージョンのfirを削除しようとします。
また、「adb」を使用する場合は、次のパッケージがあります。
Sudo apt-get install Android-tools-adb
また、約32ビットライブラリ-のみ:
Sudo apt-add-architecture i386
十分になります。
ZannaとAvinash Rajの優れた回答に加えて、gcc-multilibもインストールする必要がありました。
Sudo apt-get install gcc-multilib
おそらくこれは、64ビットで古いgccバージョンを実行したかったためです。