2008/09/17(水)[cygwin][SH2][組込] cygwin 上に,クロス開発環境を構築する~SH編~
結論:linuxマシンを持ってきたほうが早い... VMwareがあるならそっちのがいいんじゃね?
前置き
まだ実績は無いです.cygwin上でSH2のクロス開発環境を用意する.. 途中.
buildが終わらないから中断した. 前線基地でもとりあえずbuildまわしっぱなしで寝てみる...
KPITやHEWやら使って TOPPERS kernelをbuildして~,と考えていたのだけれど,なんかしっくりと来ない.perl/awk/make等全部同じ環境(dll含めて..)で動くものを用意したほうが安定しそうなのでこうなった.本当は無償版HEWで環境作れたらよかったのだけれど,アーキテクチャ依存部を持ってきてTool chain違いで跳ねられたのであきらめた.コンフィギュレータはcygwin/VC++の両方で作るところまでやった.Boost lib.が要るなど,案外面倒だ.手軽に使いづらいのと,開発環境のメンテを考えると,市販のRTOSを選択するのが賢いと思われる.TOPPERSをhackして自分でカスタムできるレベルであればその限りではないが....
必要ファイルをそろえる
下記のファイルを拾ってくる.
- binutils-2.18*1
- GCC 4.3.2
- newlib-1.16.0
- gmp-4.2.3 // GCC 4.3あたりから必要になった?
- mpfr-2.3.2 // GCC 4.3あたりから必要になった?
TOPPERS/ASPカーネルのbuild環境は,以下のとおりらしい.とりあえず新しい物好きなので上記で試してみる.
- binutils-2.16.1.tar.bz2
- gcc-3.4.4.tar.bz2
- newlib-1.13.0.tar.gz
手順
ここではcygwin環境での操作をメモしておく.パス名等は適宜読み替えて対応されたい.
下準備とbinutilを作る.とりあえずhomeディレクトリ配下において様子を見る.
$> mkdir -p usr/bin $> mkdir -p usr/src $> mkdir -p usr/tmp/binutils-build $> cd usr/src $> bzcat /cygdrive/c/temp/cross/binutils-2.18.tar.bz2 | tar x $> bzcat /cygdrive/c/temp/cross/gcc-4.3.2.tar.bz2 | tar x $> zcat /cygdrive/c/temp/cross/newlib-1.16.0.tar.gz | tar x $> cd usr/tmp/binutils-build $> ../../src/binutils-2.18/configure --prefix=/home/XXXXX/usr --target=sh-elf $> make && make install $> export PATH=/home/XXXXX/usr/bin/:$PATH
GMPをひろってきて,解凍して...面倒くさいなぁ..
> ./configure > make > make check > make install
MPFRも configure, make しないとだめぽいな... GMP先に入れないとダメです.
> ./configure > make > make check > make install
で,ようやくgccのクロスコンパイラとnewlibが作れる.
$> mkdir -p usr/tmp/gcc-build $> cd usr/src/gcc-4.3.2/ $> ln -s ../newlib-1.16.0/newlib . $> cd ../../tmp/gcc-build/ $> ../../src/gcc-4.3.2/configure --prefix=/home/XXXXXX/usr --target=sh-elf --enable-languages="c" --with-newlib $> make ... (E6600/MEM2Gで18時間程度かかりました) $> make install
cygwinだと数時間オーダ18時間..
newlibのbuildがアーキテクチャごとに全部回るみたい('A`
おまけ
MPRF/GMPを入れなかった場合.昔と同じようにGCC,binutil,newlibだけでbuildを試みた例.makeに失敗するので気づくでしょう...
$> mkdir -p usr/tmp/gcc-build $> cd usr/src/gcc-4.3.2/ $> ln -s ../newlib-1.16.0/newlib . $> cd ../../tmp/gcc-build/ $> ../../src/gcc-4.3.2/configure --prefix=/home/XXXXX/usr --target=sh-elf --enable-languages="c" --with-newlib > configure: error: Building GCC requires GMP 4.1+ and MPFR 2.3.0+. > Try the --with-gmp and/or --with-mpfr options to specify their locations. > Copies of these libraries' source code can be found at their respective > hosting sites as well as at ftp://gcc.gnu.org/pub/gcc/infrastructure/. > See also http://gcc.gnu.org/install/prerequisites.html for additional info. > If you obtained GMP and/or MPFR from a vendor distribution package, make > sure that you have installed both the libraries and the header files. > They may be located in separate packages.
エラーがでる.いつの間にかいろいろライブラリを要求するようになってしまったようだ.