Ubuntu 12.04LTS Beta2 でAndroid AOSP masterをビルド
Ubuntu 12.04LTS Beta2 でAndroid AOSP masterをビルド。
$ export PATH=/usr/lib/jvm/jdk1.6.0_31/bin:$PATH $ . build/envsetup.sh $ lunch full-eng $ nohup make -k > make.log3 2>&1 & $ tail -F make.log3
以下のようなエラーになりました。
... host C++: libGLcommon <= development/tools/emulator/opengl/host/libs/Translator/GLcommon/objectNameManager.cpp host C++: libGLcommon <= development/tools/emulator/opengl/host/libs/Translator/GLcommon/FramebufferData.cpp host StaticLib: libGLcommon (out/host/linux-x86/obj/STATIC_LIBRARIES/libGLcommon_intermediates/libGLcommon.a) host SharedLib: libGLES_CM_translator (out/host/linux-x86/obj/lib/libGLES_CM_translator.so) /usr/bin/ld: cannot find -lGL collect2: ld returned 1 exit status make: *** [out/host/linux-x86/obj/lib/libGLES_CM_translator.so] Error 1
out/host/linux-x86/obj/lib/libGLES_CM_translator.so を作るのに -lGL のライブラリが無いと怒られました。
libgl1-mesa-dev のパッケージを入れれば、/usr/lib/i386-linux-gnu/mesa/libGL.so が入ることがわかります。
でも、libgl1-mesa-dev はすでにインストール済みでした。
Ubuntu 10.04ではうまくビルドできるので、そこでリンクされたライブラリを見てみると
$ cd out/host/linux-x86/lib $ ldd libGLES_CM_translator.so linux-gate.so.1 => (0xf7724000) libGL.so.1 => /usr/lib32/mesa/libGL.so.1 (0xf766a000) libdl.so.2 => /lib32/libdl.so.2 (0xf7666000) libpthread.so.0 => /lib32/libpthread.so.0 (0xf764c000) librt.so.1 => /lib32/librt.so.1 (0xf7643000) libstdc++.so.6 => /usr/lib32/libstdc++.so.6 (0xf754d000) libm.so.6 => /lib32/libm.so.6 (0xf7527000) libgcc_s.so.1 => /usr/lib32/libgcc_s.so.1 (0xf7508000) libc.so.6 => /lib32/libc.so.6 (0xf73ad000) libX11.so.6 => /usr/lib32/libX11.so.6 (0xf7290000) libXext.so.6 => /usr/lib32/libXext.so.6 (0xf7280000) libXxf86vm.so.1 => /usr/lib32/libXxf86vm.so.1 (0xf727a000) libXdamage.so.1 => /usr/lib32/libXdamage.so.1 (0xf7276000) libXfixes.so.3 => /usr/lib32/libXfixes.so.3 (0xf7270000) libdrm.so.2 => /lib32/libdrm.so.2 (0xf7264000) /lib/ld-linux.so.2 (0xf7725000) libxcb.so.1 => /usr/lib32/libxcb.so.1 (0xf724a000) libXau.so.6 => /usr/lib32/libXau.so.6 (0xf7246000) libXdmcp.so.6 => /usr/lib32/libXdmcp.so.6 (0xf7240000)
どうもインストールされるライブラリのディレクトリ構成が変わったようです。/usr/lib32/mesa/libGL.so.1 で参照できるようにシンボリックリンクを張ってみます。
$ sudo ln -s /usr/lib/i386-linux-gnu/mesa /usr/lib32/ $ ls /usr/lib32/mesa/libGL.so.1 /usr/lib32/mesa/libGL.so.1 $ size /usr/lib32/mesa/libGL.so.1 text data bss dec hex filename 347621 6064 1508 355193 56b79 /usr/lib32/mesa/libGL.so.1 $
これで再トライ。
============================================ PLATFORM_VERSION_CODENAME=AOSP PLATFORM_VERSION=4.0.4.0.4.0.4 TARGET_PRODUCT=full TARGET_BUILD_VARIANT=eng TARGET_BUILD_TYPE=release TARGET_BUILD_APPS= TARGET_ARCH=arm TARGET_ARCH_VARIANT=armv7-a HOST_ARCH=x86 HOST_OS=linux HOST_OS_EXTRA=Linux-3.2.0-20-generic-x86_64-with-Ubuntu-12.04-precise HOST_BUILD_TYPE=release BUILD_ID=OPENMASTER OUT_DIR=out ============================================ host SharedLib: libGLES_CM_translator (out/host/linux-x86/obj/lib/libGLES_CM_translator.so) /usr/bin/ld: cannot find -lGL collect2: ld returned 1 exit status make: *** [out/host/linux-x86/obj/lib/libGLES_CM_translator.so] Error 1 host SharedLib: libEGL_translator (out/host/linux-x86/obj/lib/libEGL_translator.so) /usr/bin/ld: cannot find -lGL collect2: ld returned 1 exit status make: *** [out/host/linux-x86/obj/lib/libEGL_translator.so] Error 1 host SharedLib: libGLES_V2_translator (out/host/linux-x86/obj/lib/libGLES_V2_translator.so) /usr/bin/ld: cannot find -lGL collect2: ld returned 1 exit status make: *** [out/host/linux-x86/obj/lib/libGLES_V2_translator.so] Error 1 make: Target `droid' not remade because of errors.
まだだめ。
Ubuntu 10.04の方で調べると
$ find /usr/lib32 -name "libGL.so*" /usr/lib32/libGL.so /usr/lib32/mesa/libGL.so.1.2 /usr/lib32/mesa/libGL.so.1 $ ls -l /usr/lib32/libGL.so lrwxrwxrwx 1 root root 15 2011-05-02 12:44 /usr/lib32/libGL.so -> mesa/libGL.so.1
きっと/usr/lib32/libGL.so が足りないせいだ。
Ubuntu 12.04で
$ cd /usr/lib32 $ sudo ln -s mesa/libGL.so.1 libGL.so $ ls -l /usr/lib32/libGL.so lrwxrwxrwx 1 root root 15 Apr 12 13:57 /usr/lib32/libGL.so -> mesa/libGL.so.1 $ size /usr/lib32/libGL.so text data bss dec hex filename 347621 6064 1508 355193 56b79 /usr/lib32/libGL.so
これでビルドできました!
要するに、/usr/lib32/libGL.so が足りなかった。
masterはgcc 4.6でビルドできるようになっています。
emulatorの起動は以下の通り。
Xvfbを使ってAndroidのemulatorを画面無しで立ち上げる - 組み込みの人。
emulator64-arm と emulator64-x86ができていて、emulatorを起動するとそのどちらかがexecされるようになってました。
$ cd out/host/linux-x86/bin $ ls emulator* emulator emulator64-arm emulator64-x86 emulator-arm emulator_renderer emulator-ui emulator-x86 koba@ubuntu1204:~/android-master/out/host/linux-x86/bin$ file emulator* emulator: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.8, not stripped emulator64-arm: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.8, not stripped emulator64-x86: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.8, not stripped emulator-arm: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.8, not stripped emulator_renderer: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.24, BuildID[sha1]=0x2bc3dd1e3abcb087943d30701692f0b97d1ba9e4, not stripped emulator-ui: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.8, not stripped emulator-x86: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.8, not stripped
psで見ると、emulatorのプロセスからjava com.android.ddms.Main ping emulator 19.0 というコマンドの子プロセスが生成されている。これは何だろう。
$ ps l F UID PID PPID PRI NI VSZ RSS WCHAN STAT TTY TIME COMMAND 0 1000 1221 1220 20 0 27884 3508 wait Ss pts/0 0:01 -bash 0 1000 4848 4847 20 0 27516 8452 wait Ss pts/1 0:07 -bash 0 1000 24731 24730 20 0 27520 8548 n_tty_ Ss+ pts/2 0:03 -bash 0 1000 31704 24731 20 0 96008 16644 poll_s S pts/2 0:00 Xvfb :3 -screen 0 640x480x16 0 1000 31797 1221 20 0 875480 325828 poll_s S+ pts/0 1:58 /home/koba/android-master/out/host/linux-x86/bin/emulator64-arm -show-kernel -shell 0 1000 31801 31797 20 0 1073736 44184 futex_ Sl+ pts/0 0:03 java -Xmx256M -Dcom.android.ddms.bindir=/home/koba/android-master/out/host/linux-x86/bin -classpath /home/koba/android-master/out/host/linux-x86/framework/ddms.jar:/home/koba/android-master/out/host/linux-x86/framework/swtmenubar.jar:/home/koba/android-master/prebuilts/tools/linux-x86_64/swt/swt.jar com.android.ddms.Main ping emulator 19.0 0 1000 31903 4848 20 0 9720 1048 - R+ pts/1 0:00 ps l