2011年8月17日水曜日

64bit ubuntu adbが動かなかった

いつまでも古いPCでAndroidでもないので、新しいPCにAndroid環境構築。
新しいPCは64bit。
ま、あまり影響ないよね、と油断してたら、adbまわりでエラーがでた。

ADTインストール中にも、adb kill failureとか見たような気が・・・
すんだ事を気に病んでもしかたがない、ポジティブシンキングで行こう!

症状は、エミュレータ作成しようとするとエラーになって作れない。


tools/mksdcard: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory
Failed to create the SD card.
Failed to create sdcard in the AVD folder.

libstdc++.so.6?

ldd adb 実施。なにが足りないのか、分かるかな。

linux-gate.so.1 =>  (0xf779a000)
librt.so.1 => /lib32/librt.so.1 (0xf7781000)
libncurses.so.5 => not found
libpthread.so.0 => /lib32/libpthread.so.0 (0xf7767000)
libstdc++.so.6 => not found
libm.so.6 => /lib32/libm.so.6 (0xf7741000)
libgcc_s.so.1 => /usr/lib32/libgcc_s.so.1 (0xf7725000)
libc.so.6 => /lib32/libc.so.6 (0xf75ca000)
/lib/ld-linux.so.2 (0xf779b000)

libncurses.so.5
libstdc++.so.6

両方分かりませんが。
ググったら、g++-multilibが必要らしい

インストールした。

Ubuntu ソフトウェアセンターで、「g++」で検索したら、いくつか出てきた。
ぐぐる先生の言う通りに g++-multilibと書いてあったものをインストールした。

ldd adb よもう一度。

linux-gate.so.1 =>  (0xf7728000)
librt.so.1 => /lib32/librt.so.1 (0xf770f000)
libncurses.so.5 => not found
libpthread.so.0 => /lib32/libpthread.so.0 (0xf76f5000)
libstdc++.so.6 => /usr/lib32/libstdc++.so.6 (0xf760a000)
libm.so.6 => /lib32/libm.so.6 (0xf75e4000)
libgcc_s.so.1 => /usr/lib32/libgcc_s.so.1 (0xf75c8000)
libc.so.6 => /lib32/libc.so.6 (0xf746d000)
/lib/ld-linux.so.2 (0xf7729000)

libncurses.so.5が相変わらずない。

普通にncursesをインストールしてもダメ。
上のldd結果をよーく見ると、/lib32というのが見えますね。
32bit版が必要なのです。

そこで、32bit版のncurses5を探します。

Ubuntuソフトウェアセンターにはありません。
探し方が悪いかもしれませんが、ないのでコマンドで。

apt-cache search ncurses

おぉ!たくさんある。

apt-cache search ncurses | grep lib32

これでOK
見つかったncursesの32bit版をインストール

sudo apt-get install lib32ncurses5

linux-gate.so.1 =>  (0xf774f000)
librt.so.1 => /lib32/librt.so.1 (0xf7736000)
libncurses.so.5 => /lib32/libncurses.so.5 (0xf76fd000)
libpthread.so.0 => /lib32/libpthread.so.0 (0xf76e3000)
libstdc++.so.6 => /usr/lib32/libstdc++.so.6 (0xf75f8000)
libm.so.6 => /lib32/libm.so.6 (0xf75d2000)
libgcc_s.so.1 => /usr/lib32/libgcc_s.so.1 (0xf75b6000)
libc.so.6 => /lib32/libc.so.6 (0xf745b000)
/lib/ld-linux.so.2 (0xf7750000)

お、全部埋まった。

エミュレータ作成・・・成功!
動くかな
エミュレータ実行・・・まさかの失敗。

SDL init failure, reason is: No available video device

なんと!
しらべていったら、32bit版のライブラリがいろいろ足りないらしい。
そんなときは、ia32なんていう便利なものがあるので、いれるといいよ。

sudo apt-get install ia32-libs

よし、エミュレータ実行

動いた!
64bitっていろいろこまかく発生するねぇ

動いてよかった。


0 件のコメント:

コメントを投稿