計算機メモ目次 (目的のページと内容が一致しない場合, 目次から探してください)
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 をビルドした方がいい.
計算機メモ目次 (目的のページと内容が一致しない場合, 目次から探してください)