BeagleBoard xMと戯れる(4)
今後のことも考えて、空いてたPC(DellのPentium D/メモリ 1GB)にUbuntu64bit版をインストールして、実機ビルド環境を作ってみた。
そしてSolaさんの手順でビルドしてみたところ、予想しなかったエラーが。
kishima@Ubuntu64:~/android/xmbeagle2/OHA-Android-2.3_r1.0/kernel/beagleboard-ti$ cd ../../kishima@Ubuntu64:~/android/xmbeagle2/OHA-Android-2.3_r1.0$ export ANDROID=$PWD kishima@Ubuntu64:~/android/xmbeagle2/OHA-Android-2.3_r1.0$ cd kernel/beagleboard-ti/ kishima@Ubuntu64:~/android/xmbeagle2/OHA-Android-2.3_r1.0/kernel/beagleboard-ti$ make ARCH=arm CROSS_COMPILE=$ANDROID/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi- omap3_beagle_android_defconfig # # configuration written to .config # kishima@Ubuntu64:~/android/xmbeagle2/OHA-Android-2.3_r1.0/kernel/beagleboard-ti$ make ARCH=arm CROSS_COMPILE=$ANDROID/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi- uImage make: /home/kishima/android/xmbeagle2/OHA-Android-2.3_r1.0/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-gcc: コマンドが見つかりませんでした scripts/kconfig/conf -s arch/arm/Kconfig make: /home/kishima/android/xmbeagle2/OHA-Android-2.3_r1.0/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-gcc: コマンドが見つかりませんでした CHK include/linux/version.h make[1]: `include/asm-arm/mach-types.h' は更新済みです CHK include/linux/utsrelease.h SYMLINK include/asm -> include/asm-arm CC kernel/bounds.s /bin/sh: /home/kishima/android/xmbeagle2/OHA-Android-2.3_r1.0/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-gcc: not found make[1]: *** [kernel/bounds.s] エラー 127 make: *** [prepare0] エラー 2
ファイルは存在しているのに、実行すると存在しないと言われてしまう。困った。もう少し調べてみます。
kishima@Ubuntu64:~/android/xmbeagle2/OHA-Android-2.3_r1.0/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin$ ll 合計 124184 drwxr-xr-x 2 kishima kishima 4096 2011-03-06 12:07 ./ drwxr-xr-x 10 kishima kishima 4096 2011-03-06 11:25 ../ -rwxr-xr-x 1 kishima kishima 2339429 2011-03-06 11:25 arm-eabi-addr2line* -rwxr-xr-x 1 kishima kishima 2471510 2011-03-06 11:25 arm-eabi-ar* -rwxr-xr-x 1 kishima kishima 3716020 2011-03-06 11:25 arm-eabi-as* -rwxr-xr-x 1 kishima kishima 473358 2011-03-06 11:25 arm-eabi-c++* -rwxr-xr-x 1 kishima kishima 2318761 2011-03-06 11:25 arm-eabi-c++filt* -rwxr-xr-x 1 kishima kishima 468814 2011-03-06 11:25 arm-eabi-cpp* -rwxr-xr-x 1 kishima kishima 473358 2011-03-06 11:25 arm-eabi-g++* -rwxr-xr-x 1 kishima kishima 467559 2011-03-06 11:25 arm-eabi-gcc* -rwxr-xr-x 1 kishima kishima 467559 2011-03-06 11:25 arm-eabi-gcc-4.4.3* -rwxr-xr-x 1 kishima kishima 16707 2011-03-06 11:25 arm-eabi-gccbug* -rwxr-xr-x 1 kishima kishima 227656 2011-03-06 11:25 arm-eabi-gcov* -rwxr-xr-x 1 kishima kishima 13079824 2011-03-06 11:25 arm-eabi-gdb* -rwxr-xr-x 1 kishima kishima 13079921 2011-03-06 11:25 arm-eabi-gdbtui* -rwxr-xr-x 1 kishima kishima 2742133 2011-03-06 11:25 arm-eabi-gprof* -rwxr-xr-x 1 kishima kishima 29756517 2011-03-06 11:25 arm-eabi-ld* -rwxr-xr-x 1 kishima kishima 3220485 2011-03-06 11:25 arm-eabi-ld.bfd* -rwxr-xr-x 1 kishima kishima 29756517 2011-03-06 11:25 arm-eabi-ld.gold* -rwxr-xr-x 1 kishima kishima 2372740 2011-03-06 11:25 arm-eabi-nm* -rwxr-xr-x 1 kishima kishima 2879086 2011-03-06 11:25 arm-eabi-objcopy* -rwxr-xr-x 1 kishima kishima 3216323 2011-03-06 11:25 arm-eabi-objdump* -rwxr-xr-x 1 kishima kishima 2471541 2011-03-06 11:25 arm-eabi-ranlib* -rwxr-xr-x 1 kishima kishima 570751 2011-03-06 11:25 arm-eabi-readelf* -rwxr-xr-x 1 kishima kishima 2919804 2011-03-06 11:25 arm-eabi-run* -rwxr-xr-x 1 kishima kishima 2364036 2011-03-06 11:25 arm-eabi-size* -rwxr-xr-x 1 kishima kishima 2340995 2011-03-06 11:25 arm-eabi-strings* -rwxr-xr-x 1 kishima kishima 2879085 2011-03-06 11:25 arm-eabi-strip* -rw-r--r-- 1 kishima kishima 4 2011-03-06 12:07 temp kishima@Ubuntu64:~/android/xmbeagle2/OHA-Android-2.3_r1.0/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin$ ./arm-eabi-gcc bash: ./arm-eabi-gcc: そのようなファイルやディレクトリはありません
原因が分かりました。32bit用ライブラリが不足していたことが原因でした。tetsu-kobaさんの記事に救われました。ありがとうございます。
下記をインストールすれば上手くいきました。
$ sudo apt-get install gcc-multilib g++-multilib ia32-libs $ sudo apt-get install lib32z1-dev lib32ncurses5-dev
上手くいったかと思いきや、libreadline.soがincompatibleというエラー発生。
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.4.5/../../../libreadline.so when searching for -lreadline
こちらを参考に、追加でこれも必要。
$ sudo apt-get install lib32readline5-dev
mkimageがない。
$ sudo apt-get install uboot-mkimage
できた、と思って動かしてみると、initの処理で"exec format error" が各種実行ファイルで発生。んー、これは何がいけないんだろう?