体験!マイコンボードで組込みLinux

第16回 GNU標準パッケージを移植してみよう

この記事を読むのに必要な時間:およそ 3 分

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.bz2

  • linux-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の各種ミラーサイトから上記ソースパッケージをダウンロードします。

著者プロフィール

みついわゆきお

1986年日立製作所入所,その3年後に自社ワークステーションでの開発業務をきっかけにBSDを経てLinux利用を始める。

1991年日立を退社し,その後,ボランティアでLinux関連ツールの整備と開発しながらWindows否定運動およびLinux普及運動を開始し,Linuxディストリビューション草創期にはPlamoLinuxのメンテナンスにもかかわる。

2001年ごろより非営利ベースでボードコンピュータの開発を開始し,やがて,無償によりハードとソフトを開発したH8マイコンボードの販売を秋月電子にて開始した。

現在,ボードコンピュータ用基本ソフトMES2.5や,SHプロセッサ向けLinuxパッチおよびTOPPERS/JSPパッチを無償で一般に提供しながら,ティーエーシーやエムイーシステムより原価率100%を目標(ただし,販売店の営業・販売費用や開発・製造の際の差損を除く)としたSuperHボードコンピュータを販売中。

また,現在でも頑固にMS社否定及びWindows撲滅運動に邁進中。

コメント

コメントの記入