正しい(かどうかはわからない) gdc for arm-linux

リナザウD言語の時代到来さー。(以下の記述は d-for-gcc-r1d での記述です)

binutils

> tar -xvzf ~/arch/binutils-2.14.tar.gz
> cd binutils-2.14.tar.gz
> ./configure --target=arm-linux --prefix=/usr/local/stow/gcc-gdc-arm-3.3.2 --host=i686-redhat-linux
> make
> sudo make install

gdc

> tar -xvjf ~/arch/gcc-3.3.2.tar.bz2
> cd gcc-3.3.2/gcc
> tar -xvzf ~/arch/d-for-gcc-r1d.tgz
> patch -p1 < d/patch-gcc-3.3.2
> cd ..
> mkdir obj
> cd obj
> ../configure --enable-languages=c,d,c++ --prefix=/usr/local/stow/gcc-gdc-arm-3.3.2 --target=arm-linux --disable-nls --host=i686-redhat-linux

/usr/local/stow/gcc-gdc-arm-3.3.2/arm-linux
内に、
/opt/Embedix/tools/arm-linux/include
へのリンクをはる。

> make
> sudo make install

phobos

> mkdir phobos
> cd phobos

configure スクリプト中に強制的に d_have_dmd=yes を書く。

> PATH=/usr/local/stow/gcc-gdc-arm-3.3.2/bin:$PATH CC=/usr/local/stow/gcc-gdc-arm-3.3.2/bin/arm-linux-gcc DMD=/usr/local/stow/gcc-gdc-arm-3.3.2/bin/arm-linux-gdc ../../gcc/d/phobos/configure --target=arm-linux --prefix=/usr/local/stow/gcc-gdc-arm-3.3.2  --host=i686-redhat-linux

Makefile をいじる。

gen_config1: gcc/gen_config1.o
    $(CC) -o $@ $^

から

gen_config1: gcc/gen_config1.c
    gcc -o $@ $^

へ

gcc/d/phobos/gcc/deh.d に対して、いいかげん patch

96c96,97
<       _Unwind_RaiseException (&exc.unwindHeader);
    • -
> _Unwind_SjLj_RaiseException (&exc.unwindHeader); > //_Unwind_RaiseException (&exc.unwindHeader); 127a129,130 > > private int __builtin_eh_return_data_regno(int x) { return x; } > make
> /usr/local/stow/gcc-gdc-arm-3.3.2/bin/arm-linux-gdc -c hello.d
> /usr/local/stow/gcc-gdc-arm-3.3.2/bin/arm-linux-gcc -o hello hello.o /usr/local/stow/gcc-gdc-arm-3.3.2/lib/libphobos.a  -lpthread -lm

hello.d は動きました。 attohttpD とかもできたけど seg っちゃいました。原因は今後の課題。

なにかあれば下記メールアドレスへ。
shinichiro.hamaji _at_ gmail.com
shinichiro.h