gcc-4.2

gcc-4がダメならその上でチャレンジしてみる。
以下のものを用意

上ふたつは、gnuミラーサイトから。
下ふたつは、sharpから。

参考にさせていただいたサイト:

http://d.hatena.ne.jp/hake/20060424/p1

binutils build

まずはアセンブラーを準備。

$ tar jxvf binutils-2.17.tar.bz2
$ ./configure --prefix=/opt/zaurus \
--enable-shared --target=arm-linux --enable-targets=xscale-linux-elf
$ make
$ su
# make install

header copy

つぎに、sharpから貰ってきたヘッダファイルとライブラリ郡を自作ディレクトリにコピー。
これがないとgccコンパイルできない。

$ alien --to-tgz glibc-arm-2.2.2-0.i386.rpm linux-headers-arm-sa1100-2.4.6-3.i386.rpm
$ tar zxvf glibc-arm-2.2.2.tgz
$ tar zxvf linux-headers-arm-sa1100-2.4.6.tgz
$ su
# cp -a ./opt/Embedix/tools/arm-linux/include /opt/zaurus/arm-linux
# cp -a ./opt/Embedix/tools/arm-linux/lib /opt/zaurus/arm-linux

fix header

どうやら、pthread.hとsigthread.hに修正が必要な模様。

Coffee Break

binutilsコンパイル中に不思議な文字列がターミナル上に表示された。

CPU0: Temperature above threshold
CPU0: Running in modulated clock mode

調べてみると、まずい熱暴走手前見たい。とりあえずパソコンの側面カバーをあけて冷却。

gcc build

$ export PATH=/opt/zaurus/bin:$PATH 
$ mkdir xscale-gcc
$ cd xscale-gcc
$ CFLAGS="-O2" CFLAGS_FOR_TARGET="-O2 -mcpu=xscale -Wa,-mfpu=fpa" \
../configure --prefix=/opt/zaurus --target=arm-linux \
--with-cpu=xscale --enable-shared --enable-languages=c,c++
$ make
$ su
# export PATH=/opt/zaurus/bin:$PATH 
# make install

ベンチマークテスト

ここはひとつ業界標準で。
http://digit.que.ne.jp/visit/index.cgi?Linux%A5%B6%A5%A6%A5%EB%A5%B9%B3%AB%C8%AF%A5%E1%A5%E2%2FBenchmark
このサイトによると、C3000(gcc 2.95.1))で454,546 Dhrystone (for 10,000,000 runs)

gcc-4.2

機種が異なるので厳密に比較できないがチャレンジ。
C760(gcc-4.2.0) arm-linux-gcc -O4 -DTIME dhry_1.c dhry_2.c -lm -static
526315.8 Dhrystone (for 10,000,000 runs)

おお、gcc-4.2優秀じゃん。