読者です 読者をやめる 読者になる 読者になる

GCC 4.5.1をビルドする

gcc

GCC 4.5.1をビルドしたのでそのときのメモ。
環境は X86_64 Ubuntu 10.10, gcc-4.4.5です。


ビルドに当たり必要となるソフトウェア。詳しいいことはここにあります。

  • GMP(5.0.1)
  • MPFR(3.0.0)
  • MPC(0.8.2)
  • PPL(0.11)
  • cloog-ppl(0.15.10)

それぞれのインストール手順を示します。(最悪これらは GCCビルド時に
disableとしてしまえばいらないと思います。)


ソースコードの取得は

からそれぞれ行いました。

ビルドに必要となるツールを入れる
  % sudo aptitude build-dep gcc-4.5

インストールにはすべて管理できるように pacoを使いました。

GMPのインストール

PPLのインストール時に GMPの C++を enableにしろと言われてしまった
ので、--enable-cxxをつけて configureしています。

  % ./configure --enable-cxx
  % make
  % make check
  % sudo paco -D make install
MPFRのインストール

GMPを事前にインストールしている必要があります。

  % ./configure --with-gmp=/usr/local
  % make
  % make check
  % sudo paco -D make install

gmpをインストールした場所に LD PATHが通っているか確認して
ください。ldconfigとするだけいいと思うのですが、それでもダメ
なら LD_LIBRARY_PATH環境変数にインストールディレクトリを指定
してください。

MPCのインストール

事前に GMPと MPFRをインストールしておく必要があります。

  % ./configure --with-gmp=/usr/local --with-mpfr=/usr/local
  % make
  % make check
  % sudo paco -D make install
PPLのインストール

GMPを事前にインストールしておく必要があります。

  % ./configure --with-gmp-prefix=/usr/local
  % make
  % make check(異常に時間がかかる)
  % sudo paco -D make install

私のマシン(Core2duo T7500)では 2時間以上かけても make checkが
終わらなかったので途中でやめました。

cloog-pplのインストール

パッチが必要になりますので、パッチを適用します。

  % wget http://abechin.sakura.ne.jp/sblo_files/k-tai-douga/gcc/cloog-ppl-0.15.10-makefile.diff
  % cd (cloog-pplディレクトリ)
  % patch -p1 < パッチ

ビルド

  % ./configure --with-gmp=/usr/local --with-ppl=/usr/local
  % make
  % make check
  % sudo paco -D make install

これでやっと準備できたので GCCをビルドします。

gccのビルド

GCCのビルドはソースツリーのトップで行ってはいけません。GCCソースツリーの外でも中でもいいのですが、ビルド用のディレクトリを作成して行なってください。

  % ../configure --enable-languages=c --with-gmp=/usr/local \
    --with-mpfr=/usr/local --with-mpc=/usr/local \
    --with-ppl=/usr/local --with-cloog=/usr/local \
    --prefix=/home/syohei/local/gcc-4.5.1 --disable-nls \
    --disable-multilib
  % make
  % sudo paco -D make install

make checkは C++のテストがいきなり実行されてしまい、動きませんでした。


これでインストールしたディレクトリに PATHを通せば、作成した GCC
使えます。

GCC 4.5.2について

GCC 4.5.2では, libgomp(OpenMP)のリンク時にエラーが出ました。
内部で生成される libtool(シェルスクリプト)の問題のようです。

testgenテストスイート

testgenテストスイートというコンパイラのテストスイートを使ってチェックします。
perl、expect、dejagnuが必要になります。詳しくは付属のREADMEを参照。

  % cd testgen20070902
  (tgen.confのデータ長の情報を編集. longを 8byteにする)
  % ./bin/tgen.pl template/**/*.tt
  % cd testsuite
  % ./RUNTEST
                === gcc Summary ===

# of expected passes            63844
# of unexpected failures        12
WARNING: gcc_version failed:
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/home/syohei/local/gcc-4.5.1/libexec/gcc/x86_64-unknown-linux-gnu
/4.5.1/lto-wrapper
Target: x86_64-unknown-linux-gnu
Configured with: ../configure --enable-languages=c --with-gmp=/usr/local --with-mpfr=
/usr/local --with-mpc-include=/usr/local/include --with-mpc-lib=/usr/local/lib --with
-ppl=/usr/local --with-cloog=/usr/local --prefix=/home/syohei/local/gcc-4.5.1 --disab
le-nls --disable-multilib
Thread model: posix
gcc version 4.5.1 (GCC)
runtest completed at Sat Jan 22 17:09:15 2011

Ubuntuに元から入っていた結果と同じになりました。64ビット対応できていない
テストスイートなので、ラップアラウンドするようなものだけ失敗したんだと
思います。