SH3向けクロスコンパイラ構築の補足
最新版ディストリビューションでのエラー
前回はcrosstoolによるSH3向けクロスコンパイラ構築による構築について解説しましたが,最新のbinutilsを採用したディストリビューションでエラーが発生しますので,その対策について補足をします。
最近ではcrosstoolがメンテナンスされていないようなので,安定版ディストリビューションでは問題ないですが,最新版ディストリビューションでのエラーが発生することがあります。
原因は,glibc-2.3.6が想定したbinutilsのldとasのバージョンが2.1.xで2.2を想定していないという単純なミスマッチです。glibc-2.3.6のconfigureスクリプトでldとasの想定バージョンに2.2を追加すればいいだけなので,リスト1のパッチファイルをcrosstoolに追加すればいいだけです。パッチファイルの名称は任意で良いのでcrosstool内パッケージで,以下のフォルダにリスト1の内容のパッチファイルを追加します。
- patches/glibc-2.3.6
リスト1 glibc-2.3.6のconfigureスクリプトに当てるパッチ
diff -Naur glibc-2.3.6.orig/configure glibc-2.3.6/configure
--- glibc-2.3.6.orig/configure 2005-11-04 09:37:15.000000000 +0900
+++ glibc-2.3.6/configure 2012-01-30 14:01:22.073000003 +0900
@@ -3917,7 +3917,7 @@
ac_prog_version=`$AS --version 2>&1 | sed -n 's/^.*GNU assembler.* \([0-9]*\.[0-9.]*\).*$/\1/p'`
case $ac_prog_version in
'') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
- 2.1[3-9]*)
+ 2.1[3-9]* | 2.2*)
ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
*) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
@@ -3978,7 +3978,7 @@
ac_prog_version=`$LD --version 2>&1 | sed -n 's/^.*GNU ld.* \([0-9][0-9]*\.[0-9.]*\).*$/\1/p'`
case $ac_prog_version in
'') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
- 2.1[3-9]*)
+ 2.1[3-9]* | 2.2*)
ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
*) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
crosstoolその他の補足
crosstoolに必要なソースパッケージに関しては前回に解説しますが,ソースパッケージのネット上でのメンテナンスは日々刻刻と変化します。ソースパッケージの名称変更だけで対応できるケースもあり,それらは以下のとおりです。
gdb-6.5.tar.bz2
→ gdb-6.5a.tar.bz2linux-2.6.15.4.tar.bz2
→ linux-2.6.15.tar.bz2
GNU標準パッケージ
ソースパッケージのコンパイルについて
ソースコードのコンパイルは,基本的にはgccが動作する環境ならば可能です。
前回ではT-SH7706LSRボード上でgccでセルフコンパイルする環境を整備し,簡単なCソースコードをコンパイルしました。昔ならばそれでよかったのですが,現在では多くのソースパッケージが肥大化・複雑化しているので,GNU標準パッケージに準じたかたちで,configureコマンドでコンパイル環境のチェックやMakefileを環境に合わせて自動生成するようになっています。
前回の段階では,configureコマンドでコンパイル環境の自動生成ができないので,今回はそれをできるように整備をします。
何が必要か?
configureコマンドでコンパイル環境の自動生成をするには以下のパッケージを用意する必要があります。
- make-3.82
- libtool-2.4
- automake-1.11
- autoconf-2.68
- m4-1.4.15
ソースパッケージのコンパイルに関しては,configureコマンドでコンパイル環境の自動生成をする必要があり,「鶏と卵」の関係になるので,PC上でのクロスコンパイルによりT-SH7706LSR上でそれらを使えるようにします。
注意しなければいけない点として,上記のパッケージには他パッケージとの依存関係があるものも存在するので,T-SH7706LSRボード向けと同時にPC上のクロスコンパイラ環境の両方にインストールする必要があるパッケージもあるということがあります。
コンパイル作業をするためにGNUの各種ミラーサイトから上記ソースパッケージをダウンロードします。

