0.mingw32なgccを作るときの下準備mingw64-i686-gcc-core
mingw64-i686-gcc-g++
mingw64-i686-headers
mingw64-i686-pthreds
mingw64-i686-runtime
をcygwinのsetupでインストールする。
$ mount c:/mingw-temp /mingw-temp
$ mkdir /mingw-temp
作業フォルダは/mingw-tempです。
mountを固定したい場合は/etc/fstabに記述する。1.libiconvの作成$ cd /mingw-temp
$ mkdir libiconv
$ cd libiconv
$ wget
http://www.dnsbalance.ring.gr.jp/archives/GNU/libiconv/libiconv-1.14.tar.gz$ tar xf libiconv-1.14.tar.gz
$ mkdir mingw32
$ cd mingw32
$ ../libiconv-1.14/configure --prefix=/usr/i686-w64-mingw32/sys-root/mingw
--host=i686-w64-mingw32$ make -j4
$ make install
2.gmpの作成$ cd /mingw-temp
$ mkdir gmp
$ cd gmp
$ wget
ftp://ftp.gmplib.org/pub/gmp-5.1.0/gmp-5.1.0.tar.bz2$ tar xjf gmp-5.1.0.tar.bz2
$ mkdir mingw32
$ cd mingw32
$ ../gmp-5.1.0/configure --prefix=/usr/i686-w64-mingw32/sys-root/mingw
--host=i686-w64-mingw32 --enable-shared --disable-static
$ make -j4
$ make install
3.mpfrの作成$ cd /mingw-temp
$ mkdir mpfr
$ cd mpfr
$ wget
http://www.mpfr.org/mpfr-current/mpfr-3.1.1.tar.xz$ tar xJf mpfr-3.1.1.tar.xz
$ mkdir mingw32
$ cd mingw32
$ ../mpfr-3.1.1/configure --prefix=/usr/i686-w64-mingw32/sys-root/mingw
--host=i686-w64-mingw32 --enable-shared --disable-static
CC=i686-w64-mingw32-gcc$ make -j4
$ make install
3.mpcの作成$ cd /mingw-temp
$ mkdir mpc
$ cd mpc
$ wget
http://www.multiprecision.org/mpc/download/mpc-1.0.1.tar.gz$ tar xf mpc-1.0.1.tar.gz
$ mkdir mingw32
$ cd mingw32
$ ../mpc-1.0.1/configure --prefix=/usr/i686-w64-mingw32/sys-root/mingw
--host=i686-w64-mingw32 --enable-shared --disable-static
CC=i686-w64-mingw32-gcc$ make -j4
$ make install
4.binutilsの作成$ mount c:/rl78-elf /rl78-elf
インストール先をmountしておくmountを固定したい場合は/etc/fstabに記述する。$ cd /mingw-temp
$ mkdir binutils
$ cd binutils
$ wget
http://www.dnsbalance.ring.gr.jp/archives/GNU/binutils/binutils-2.23.1.tar.bz2$ tar xjf binutils-2.23.1.tar.bz2
$ mkdir rl78-elf
$ cd rl78-elf
$ ../binutils-2.23.1/configure --prefix=/rl78-elf --target=rl78-elf
--host=i686-w64-mingw32 $ make -j4
$ make install
5.PATHの設定と必要なDLLのコピー$ cp /usr/i686-w64-mingw32/sys-root/mingw/bin/libiconv-2.dll /rl78-elf/bin
$ cp /usr/i686-w64-mingw32/sys-root/mingw/bin/libgmp-10.dll /rl78-elf/bin
$ cp /usr/i686-w64-mingw32/sys-root/mingw/bin/libmpfr-4.dll /rl78-elf/bin
$ cp /usr/i686-w64-mingw32/sys-root/mingw/bin/libmpc-3.dll /rl78-elf/bin
$ export PATH=/rl78-elf/bin:$PATH
6.gccの作成その1$ cd /mingw-temp
$ mkdir gcc
$ cd gcc
$ wget http://www.dnsbalance.ring.gr.jp/archives/lang/egcs/releases/gcc-4.7.2/gcc-4.7.2.tar.bz2
$ tar xjf gcc-4.7.2.tar.bz2
$ mkdir rl78-elf
$ cd rl78-elf
$ CC=i686-w64-mingw32-gcc CXX=i686-w64-mingw32-g++ ../gcc-4.7.2/configure --prefix=/rl78-elf --target=rl78-elf --build=i686-w64-mingw32 --enable-languages=c --disable-build-with-cxx --disable-win32-registry
$ make all-gcc -j4
$ make install-gcc
gcc-4.7.2はnewlibでビルドが失敗します。
$ wget
http://www.dnsbalance.ring.gr.jp/archives/lang/egcs/snapshots/4.8-20130120/gcc-4.8-20130120.tar.bz2$ tar xjf gcc-4.8-20130120.tar.bz2
$ mkdir rl78-elf
$ cd rl78-elf
$
CC=i686-w64-mingw32-gcc CXX=i686-w64-mingw32-g++ ../gcc-4.8-20130120/configure --prefix=/rl78-elf --target=rl78-elf
--build=i686-w64-mingw32 --enable-languages=c --disable-win32-registry
$ make all-gcc -j4
$ make install-gcc
7.newlibの作成$ cd /mingw-temp
$ mkdir newlib
$ cd newlib
$ wget newlib-2.0.0.tar.gz
$ tar xf newlib-2.0.0.tar.gz
$ mkdir rl78-elf
$ cd rl78-elf
$ ../newlib-2.0.0/configure --prefix=/rl78-elf --target=rl78-elf
$ make -j4
$ make install
8.gccの作成その2$ cd /mingw-temp
$ cd gcc
symlinkはmingwのときは使えないので
$ sed -i "s/ln -s/cp -p/" gcc-4.8-20130120/libgcc/configure
$ sed -i "s/ln -s/cp -p/" gcc-4.8-20130120/libstdc++-v3/configure
$ rm rl78-elf -fr 一度、削除
$ mkdir rl78-elf
$ cd rl78-elf
$ CC=i686-w64-mingw32-gcc CXX=i686-w64-mingw32-g++ ../gcc-4.8-20130120/configure --prefix=/rl78-elf --target=rl78-elf --build=i686-w64-mingw32 --enable-languages=c,c++ --with-newlib --disable-win32-registry
$ make -j4
gcc-4.8-20130120だとlibstdc++-v3でビルドに失敗します。
symlinkはmingwのときは使えないので$ sed -i "s/ln -s/cp -p/" gcc-4.7.2/libgcc/configure
$ sed -i "s/ln -s/cp -p/" gcc-4.7.2/libstdc++-v3/configure
$ rm rl78-elf -fr
一度、削除$ mkdir rl78-elf
$ cd rl78-elf
$
CC=i686-w64-mingw32-gcc CXX=i686-w64-mingw32-g++ ../gcc-4.7.2/configure --prefix=/rl78-elf --target=rl78-elf
--build=i686-w64-mingw32 --enable-languages=c
,c++ --with-newlib --disable-win32-registry
$ make -j4
$ make install
ここまで、終わり
$ rl78-elf-gcc -v
組み込み spec を使用しています。
COLLECT_GCC=C:\rl78-elf\bin\rl78-elf-gcc.exe
COLLECT_LTO_WRAPPER=c:/rl78-elf/bin/../libexec/gcc/rl78-elf/4.7.2/lto-wrapper.exe
ターゲット: rl78-elf
configure 設定: ../gcc-4.7.2/configure --prefix=/rl78-elf --target=rl78-elf --build=i686-w64-mingw32 --enable-languages=c,c++ --with-newlib --disable-win32-registry
スレッドモデル: single
gcc バージョン 4.7.2 (GCC)
[0回]