忍者ブログ

なんだか

知らないほうが幸せかもしれない

[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

cygwinでmingw32なrl78-elf-gccを作ってみる

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回]

PR

コメント

お名前
タイトル
文字色
メールアドレス
URL
コメント
パスワード Vodafone絵文字 i-mode絵文字 Ezweb絵文字

カレンダー

03 2024/04 05
S M T W T F S
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30

フリーエリア

最新CM

最新記事

(07/27)
(03/27)
(03/26)
(03/23)
(03/22)
(03/19)
(03/18)
(03/18)
(03/15)
(03/14)
(03/13)
(03/12)
(03/11)
(03/11)
(03/08)
(03/08)
(03/06)
(03/05)
(03/02)
(03/01)
(02/28)
(02/27)
(02/24)
(02/23)
(02/22)

プロフィール

HN:
kenrou
性別:
非公開

バーコード

ブログ内検索

最古記事

(12/15)
(12/16)
(12/17)
(12/18)
(12/19)
(12/20)
(12/21)
(12/22)
(12/23)
(12/24)
(12/25)
(12/26)
(12/27)
(12/28)
(12/29)
(12/30)
(12/31)
(01/01)
(01/02)
(01/21)
(01/22)
(01/23)
(01/24)
(01/24)
(01/28)

P R

忍者アナライズ

コガネモチ

忍者カウンター

カレンダー

03 2024/04 05
S M T W T F S
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30