計算機メモ目次 (目的のページと内容が一致しない場合, 目次から探してください)

Solaris8 上で Forte6 コンパイラを使って gcc 4.6.2 を構築する 《古い》


準備
  作業環境
    GNU make 3.80 以上
    gmp, mpfr, mpc がインストールされていること
    binutils がインストールされていること

    UltraSPARC-IIe v9 の Sun Blade 100 と Sun Blade 150
      -xarch=v9 オプションでは64ビットになってしまい32ビット環境では使えないので
      -xarch=v8plus オプションで32ビットにして構築する

  環境変数の設定
    PATH
      /usr/ucb を外す
      /usr/ccs/bin を加える
      /usr/bin の前に /usr/xpg4/bin を置く
      /usr/local/bin の検索順位を上げる

ソースの展開

  tar xvfz gcc-4.6.2.tar.gz

ソースの編集

  gcc/tree-ssa-loop-ivopts.c を次のように編集
  (Forte6 コンパイラのバグで, かつては Sunsolve に修正するパッチがあったらしい)

*** ./gcc/tree-ssa-loop-ivopts.c.orig     Thu Jan 26 21:41:39 2012
--- ./gcc/tree-ssa-loop-ivopts.c  Thu Jan 26 21:45:54 2012
***************
*** 5676,5684 ****
    if (!origset && !set)
      return NULL;
  
!   origcost = origset ? iv_ca_cost (origset) : infinite_cost;
!   cost = set ? iv_ca_cost (set) : infinite_cost;
  
    if (dump_file && (dump_flags & TDF_DETAILS))
      {
        fprintf (dump_file, "Original cost %d (complexity %d)\n\n",
--- 5676,5691 ----
    if (!origset && !set)
      return NULL;
  
!   if (origset)
!     origcost = iv_ca_cost (origset);
!   else
!     origcost = infinite_cost;
  
+   if (set)
+     cost = iv_ca_cost (set);
+   else
+     cost = infinite_cost;
+ 
    if (dump_file && (dump_flags & TDF_DETAILS))
      {
        fprintf (dump_file, "Original cost %d (complexity %d)\n\n",


コンフィグレーション

  mkdir obj
  cd obj

  ※ これから作成するバイナリをソースとは別のディレクトリに作ると混乱しない
     ディレクトリの名前は何でも良い

  CC=cc CFLAGS="-g -O -I/usr/local/include" \
  CXX=CC CXXFLAGS="-g -O -I/usr/local/include" \
  CPPFLAGS="-I/usr/local/include" \
  LDFLAGS="-L/usr/local/lib" \
    ../gcc-4.6.2/configure \
      --with-gmp=/usr/local --with-mpfr=/usr/local --with-mpc=/usr/local \
      --with-gnu-as --with-as=/usr/local/bin/as \
      --without-gnu-ld --with-ld=/usr/ccs/bin/ld

  ※ binutils の as をきちんと指定する
     ld は純正のを使った方がよい

メーク
  gmake

  ※ CC=cc (gcc以外) を設定しているのに lto-plugin/Makefile で
     なぜか gcc のオプション -Wall 等を設定してくれるのでエラーが出る
     修正して gmake を再開する

※※※ 断念 ※※※
Solaris 8 の環境では, 細かなところが gcc 以外のコンパイラで作れるようになっておらず, 結局うまくいかない.
もしコンパイラを持っていないのであれば, gcc のバイナリを探し出してインストールして, それで最新の gcc をビルドした方がいい.


計算機メモ目次 (目的のページと内容が一致しない場合, 目次から探してください)
海洋大循環分野
daigo@ocg.aori.u-tokyo.ac.jp