[Armadillo:03500] emdebianによるeabiビルド
Takenoshita Koyo
email@hidden
2008年 10月 6日 (月) 20:42:12 JST
linux-2.6.18-at/atmark-distで、
emdebianのツールチェインを使って、eabiビルドする方法をまとめました。
開発PCには、Debian lennyを使用しました。
(Debian etchだと、
依存関係の問題でemdebianのツールチェインをインストールできませんでし
た。)
1. クロスコンパイル用のツールチェインをインストール
email@hidden:~/$ sudo apt-get install libc6-armel-cross
libc6-dev-armel-cross binutils-arm-linux-gnueabi
gcc-4.3-arm-linux-gnueabi g++-4.3-arm-linux-gnueabi
linux-kernel-headers-arm-cross
2. arm-linux-gnuの代わりに、arm-linux-gnueabi-*を使うようにatmark-dist修
正
diff --git a/vendors/AtmarkTechno/Armadillo-500/config.arch
b/vendors/AtmarkTechno/Armadillo-500/config.arch
index 962d142..ae56b5a 100644
--- a/vendors/AtmarkTechno/Armadillo-500/config.arch
+++ b/vendors/AtmarkTechno/Armadillo-500/config.arch
@@ -20,7 +20,7 @@ CONSOLE_BAUD_RATE = 9600
# STRIP_EXTRA_OPT := --remove-section=.note --remove-section=.comment
# STRIP_EXTRA_LIBOPT := --remove-section=.note
--remove-section=.comment --strip-unneeded
-VENDOR_CFLAGS = -I/usr/arm-linux/include -I$(GCC_DIR)/include
+VENDOR_CFLAGS = -I/usr/arm-linux-gnueabi/include -I$(GCC_DIR)/include
############################################################################
diff --git a/vendors/config/arm/config.arch
b/vendors/config/arm/config.arch
index 2385eb7..55129ca 100644
--- a/vendors/config/arm/config.arch
+++ b/vendors/config/arm/config.arch
@@ -57,7 +57,7 @@ endif
MACHINE = arm
ARCH = arm
-CROSS_COMPILE = arm-linux-
+CROSS_COMPILE = arm-linux-gnueabi-
CROSS = $(CROSS_COMPILE)
CC = $(CROSS_COMPILE)gcc $(CPUCFLAGS)
3. kernel configuration
KernelFeatures--->
[*] Use the ARM EABI to compile the kernel
[*] Allow old ABI binaries to run with this kernel(EXPERIMENTAL)
4. makeする。
5. 作成されたものがeabiになっていることを確認する。
email@hidden:~/eabi/atmark-dist$ readelf -h
linux-2.6.x/arch/arm/boot/compressed/vmlinux | grep Flags
Flags: 0x4000000, Version4 EABI
email@hidden:~/eabi/atmark-dist$ readelf -h romfs/bin/busybox | grep
Flags
Flags: 0x4000002, has entry point,
Version4 EABI
但し、makeするとき、atmark-dist/user以下でいくつかエラーがでます。
A. <asm/page.h>をインクルードしている場合
特に、busy boxで<asm/page.h>をincludeしているファイルがたくさんあります
が、
/usr/arm-linux-gnueabi/includeには、page.hはないのでエラーになります。
これは、単にコメントアウトしただけで回避しました。
B. ping6, flatfsd
これらは、エラーの内容を追っていないので、単にmakeの対象から外しました。
以上、ご参考になれば。
--
Takenoshita Koyo
armadillo メーリングリストの案内