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

第15回 マイコンボードで動くgcc環境の移植

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

クロスコンパイラの新規生成

なぜ新規に生成するのか

すでにSH3用のクロスコンパイラが公開されており,基本的にはこれを使えば問題はありません。しかし,今回はSH7706ボード上で動作する組込み向けセルフコンパイラを生成するので,クロスコンパイラとセルフコンパイラのバージョンを一致させなければなりません。

そのために準備としてセルフコンパイラと同じバージョンのgccのクロスコンパイラを生成します。バージョンは任意でいいですが,あまり古過ぎるのも,あまり新しいもので枯れていないものも問題なので,それなりに枯れていてかつ新しいものを選択します。今回は,gcc-4.1.2を対象にします。

crosstoolの取得

クロスコンパイラは通常の方法ではコンパイルがうまくいかないので,クロスコンパイラ構築でのエラーを回避するテクニックが必要となります。クロスコンパイラ構築のエラー回避テクニックを含めたツールはいくつかの有志によって公開されていますが,今回はその中のcrosstoolでクロスコンパイラを構築してみます。

crosstool
URL:http://kegel.com/crosstool/

crosstoolのダウンロードは上記のページからたどれる以下のURLとなります。

crosstoolの構築

crosstoolの構築は一般ユーザでなければいけません。まず,一般ユーザで以下のように展開します。

$ tar xvzf crosstool-0.43.tar.gz
$ cd crosstool-0.43

いくつかの設定ファイルを変更してから構築をします。SH3用クロスコンパイラの設定はsh3.datで,リスト1のように変更します。

リスト1 sh3.dat

01  KERNELCONFIG=`pwd`/sh3.config
02  TARGET=sh3-linux
03  TARGET_CFLAGS="-O -ml -m3"
04  GLIBC_CONFIGPARMS="no-z-defs=yes"

クロスコンパイラの構築のスクリプトはdemo-sh3.shで,リスト2のように変更します。

リスト2 demo-sh3.sh

01  #!/bin/sh
02  # This script has one line for each known working toolchain
03  # for this architecture.  Uncomment the one you want.
04  # Generated by generate-demo.pl from buildlogs/all.dats.txt
05  
06  set -ex
07  TARBALLS_DIR=$HOME/downloads
08  RESULT_TOP=$HOME/crosstool
09  export TARBALLS_DIR RESULT_TOP
10  GCC_LANGUAGES="c,c++"
11  export GCC_LANGUAGES
12  
13  # Really, you should do the mkdir before running this,
14  # and chown /opt/crosstool to yourself so you don't need to run as root.
15  mkdir -p $RESULT_TOP
16  
17  #eval `cat sh3.dat gcc-3.4.5-glibc-2.3.2.dat` sh all.sh --notest
18  #eval `cat sh3.dat gcc-3.4.5-glibc-2.3.2-tls.dat` sh all.sh --notest
19  #eval `cat sh3.dat gcc-3.4.5-glibc-2.3.5.dat` sh all.sh --notest
20  #eval `cat sh3.dat gcc-3.4.5-glibc-2.3.6.dat` sh all.sh --notestko
21  #eval `cat sh3.dat gcc-4.0.2-glibc-2.3.2.dat` sh all.sh --notest
22  #eval `cat sh3.dat gcc-4.0.2-glibc-2.3.2-tls.dat` sh all.sh --notest
23  #eval `cat sh3.dat gcc-4.0.2-glibc-2.3.5.dat` sh all.sh --notest
24  #eval `cat sh3.dat gcc-4.0.2-glibc-2.3.6.dat` sh all.sh --notest
25  #eval `cat sh3.dat gcc-4.1.0-glibc-2.3.2.dat` sh all.sh --notest
26  #eval `cat sh3.dat gcc-4.1.0-glibc-2.3.2-tls.dat` sh all.sh --notest
27  #eval `cat sh3.dat gcc-4.1.0-glibc-2.3.5.dat` sh all.sh --notest
28  eval `cat sh3.dat gcc-4.1.2-glibc-2.3.6.dat` sh all.sh --notest
29  
30  echo Done.

リスト2の7行目ではツール類のソースパッケージをダウンロードするフォルダを指定します。場所は任意でかまいません。

リスト2の8行目では生成されたクロスコンパイラをインストールする先のフォルダを指定します。こちらも場所は任意です。

リスト2の28行目でコンパイラとCライブラリの組み合わせ定義ファイルを記述します。定義ファイルが既存のもので用意されている場合はそれを使えばいいですが,そうでない場合はコンパイラとCライブラリの組み合わせ定義ファイルを新規作成する必要があります。

今回はgcc-4.1.2とglibc-2.3.6の組み合わせなので,gcc-4.1.2-glibc-2.3.6.datファイルを新規作成します。これに近いものとしては,gcc-4.1.1-glibc-2.3.6.datという既存のファイルがあるので,それをリスト3のように変更します。変更箇所はリスト3の3行目となります。

リスト3 gcc-4.1.1-glibc-2.3.6.datを変更

01  BINUTILS_DIR=binutils-2.16.1
02  GCC_CORE_DIR=gcc-3.3.6
03  GCC_DIR=gcc-4.1.2
04  GLIBC_DIR=glibc-2.3.6
05  LINUX_DIR=linux-2.6.15.4
06  LINUX_SANITIZED_HEADER_DIR=linux-libc-headers-2.6.12.0
07  GLIBCTHREADS_FILENAME=glibc-linuxthreads-2.3.6
08  GDB_DIR=gdb-6.5

これらの変更が済んだら,以下のように構築を実行します。

$ ./demo-sh3.sh

このスクリプトは必要なファイルをダウンロードしてから構築しようとしますが,現在ではうまくソースパッケージを検索できなくなっていますので,そのような場合は,gcc-4.1.1-glibc-2.3.6.datの中を見れば必要なソースパッケージがわかるので,自分でネットでソースパッケージを検索してから前述のダウンロードのフォルダに格納します。

参考のために必要なファイルは以下のとおりです。

  • binutils-2.16.1.tar.bz2
  • gcc-3.3.6.tar.bz2
  • gcc-4.1.2.tar.bz2
  • glibc-2.3.6.tar.bz2
  • linux-2.6.15.4.tar.gz
  • linux-libc-headers-2.6.12.0.tar.bz2
  • glibc-linuxthreads-2.3.6.tar.bz2
  • gdb-6.5.tar.bz2

クロスコンパイラのインストール

クロスコンパイラはシステム領域にあるので,作業はスーパーユーザで行わなければなりません。

まず,以下のように既存のクロスコンパイラをアンインストールします。

# cd /usr
# rm -rf sh3-linux

次に新規のクロスコンパイラを以下のようにインストールします。

# cd /usr
# cp -a [インストール先フォルダ]/gcc-4.1.2-glibc-2.3.6/sh3-linux .

著者プロフィール

みついわゆきお

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

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

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

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

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

コメント

コメントの記入