2010年09月19日

MinGW環境でmipsel-gccをビルド

MinGW環境でLinux をビルドするつもりはないのだが、USBBOOT は動かせるようにしたいし、stage1/stage2 とかぐらいはビルドしたい。

で mipsel-gcc をビルドしてみることにした。

ちなみに、使っている MinGW/MSYS 環境はずいぶん古い。最新の環境なら少し楽できるかも。

1. binutils-2.19

    $ ./configure --target=mipsel --prefix=/mingw
    $ make
    これで良いはずだが、info が作れずエラー。
    bfd/Makefile SUBDIRS から doc を除くことでビルドできた。

    $ make install

2. gmp-4.3.2

    gcc をビルドするには、gmp と mpfr が必要だが、古いのでない。

    $ ./configure --prefix=/mingw
    $ make
    $ make install

3. mpfr-2.4.2

    $ ./configure --prefix=/mingw
    $ make
    $ make install

4. gcc-4.2.4

    最初に gcc-4.4.4 を試した。-- make-3.80 以上が必要なのだが、古い環境なので 3.79 。新しい make をビルドしても動かなかったので、gcc-4.2.4 に変更。

    $ ./configure --target=mipsel --prefix=/mingw --enable-languages=c
    $ make

    libgcc2.c の _muldi3.o の make で

    ./tm.h:9:27: error: config/elfos.h: No such file or directory
    ./tm.h:10:31: error: config/mips/mips.h: No such file or directory
    ./tm.h:11:30: error: config/mips/elf.h: No such file or directory
    ./tm.h:12:23: error: defaults.h: No such file or directory

    なんてエラー

    gcc/Makefileの LIBGCC2_INCLUDES

      LIBGCC2_INCLUDES = -I/d/AVR/gcc-4.2.4/gcc

    なんて風に MinGW 流のパスを付けたら先に進んだ。

    次に libssp/ssp.c で O_RDONLY や ssize_t がないとエラー。

    gcc 自体の ビルドは終わっている。無視して

    $ make instll

    使わないはずなので、configure に --disable-libssp を追加しても良い。

確認

    linux は、scripts の HOSTのプログラムのビルドでエラー。-- mmap 使っているので無理だった。
    usbboot の xburst_stage1 は OK 。

ファイルが足りないかも知れないのだが ... 最小限のバイナリを置いておく。→ 再作成したので削除 。再作成版は後ろに記述。

... そういえば、PIC32 も mips 。役に立つのだろうか?

    "MPLABо C Compiler for PIC32 MCUs User's Guide" (pdf) に説明がある。汎用なので、PIC32 用のマクロが定義されていないぐらい? そういえば mips16/mips16e は気にしていなかった。.. チェックしたら binutils も含め mips16/mips16e は、使えなかった。

    MIC32用のビルドは、--prefif,--enable-language に加えて、
     --target=pic32mx --with-dwarf2 --enable-multilib --disable-libssp
    ぐらいを付ければ良さそう。


再度ビルドに挑戦中。

ここみて、オプション変更。

1. binutils-2.19.1

OpenWRT のパッチ集が ここにある。

200-mips_non_pic.patch というのが気になる。関係ないのも多いが 一応数字の順に全部あてる。



    $ mkdir build; cd build
    $ ../configure --target=mipsel --prefix=/mingw --disable-nls \
    --without-included-gettext
    $ make
    (info が作れずエラー) → bfd/Makefile SUBDIRS から doc を除く。

    gas でも、info が作れずエラー。
    gas/Makefile SUBDIRS から doc を除く。

    ld も引っかかる。どうやら余計なパッチを当ててしまったようだ。

    $ make install


gmp-4.3.2/mpfr-2.4.2 は上記参照

4. gcc-4.2.4

OpenWRT のパッチ集が ここにある。

随分多いのだが、当たらないものもあるし、c++ 用のものも多い。ビルドは、c だけにすることにして

    820-libgcc_pic.patch
    910-soft-float.patch
    920-soft-float.patch
    930-eabi_fixes.patch
    951-bug_37014.patch
    952-bug_34762.patch

だけにする。


    $ mkdir build; cd build
    $ ../configure --target=mipsel --prefix=/mingw \
    --enable-languages=c \
    --disable-multilib --disable-decimal-float --with-float=soft --with-abi=32 \
    --with-tune=mips32 --with-dwarf2 \
    --disable-__cxa_atexit --disable-libssp --disable-tls --enable-static \
    --disable-nls --disable-threads
    $ make
    (libgcc2.c の _muldi3.o の make でエラー) → gcc/Makefileの LIBGCC2_INCLUDES 編集
    $ make
    $ make install


パッチは、tar+gzip で固めたのを 次に置いておく。


バイナリ (最小限 -- 作成中)
posted by すz at 05:09| Comment(0) | TrackBack(0) | Jz47xx
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス: [必須入力]

ホームページアドレス: [必須入力]

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/40803140
※ブログオーナーが承認したトラックバックのみ表示されます。

この記事へのトラックバック