クロスコンパイラの新規生成
なぜ新規に生成するのか
すでにSH3用のクロスコンパイラが公開されており,
そのために準備としてセルフコンパイラと同じバージョンのgccのクロスコンパイラを生成します。バージョンは任意でいいですが,
crosstoolの取得
クロスコンパイラは通常の方法ではコンパイルがうまくいかないので,
- crosstool
- URL:http://
kegel. com/ crosstool/
crosstoolのダウンロードは上記のページからたどれる以下のURLとなります。
crosstoolの構築
crosstoolの構築は一般ユーザでなければいけません。まず,
$ tar xvzf crosstool-0.43.tar.gz $ cd crosstool-0.43
いくつかの設定ファイルを変更してから構築をします。SH3用クロスコンパイラの設定はsh3.
リスト1 sh3.
01 KERNELCONFIG=`pwd`/sh3.config
02 TARGET=sh3-linux
03 TARGET_CFLAGS="-O -ml -m3"
04 GLIBC_CONFIGPARMS="no-z-defs=yes"
クロスコンパイラの構築のスクリプトはdemo-sh3.
リスト2 demo-sh3.
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ライブラリの組み合わせ定義ファイルを記述します。定義ファイルが既存のもので用意されている場合はそれを使えばいいですが,
今回はgcc-4.
リスト3 gcc-4.
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
このスクリプトは必要なファイルをダウンロードしてから構築しようとしますが,
参考のために必要なファイルは以下のとおりです。
- 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 .