今後のことも考えて、空いてた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" が各種実行ファイルで発生。んー、これは何がいけないんだろう?