December 28, 2005

MacOSX(10.2.8)でgcc 3.4.5のコンパイル

Boost::SpiritでCMSを作ろうという企画ですが、サーバで動かなければ企画倒れですので、とりあえずサーバ機のPowerMac G3(@350MHz そろそろ引退?)でコンパイルしてみました。

結果コンパイルできません。自前のプログラム以前の問題で、boostのinstallでかなりこけています。エラーの内容は

`tree_list' not supported by dump_expr

Webを巡回してみるとgccのバージョンをあげれば大丈夫なようなのでgcc3系列の最新版3.4.5をコンパイル & インストールしてみることにしました。本来ならFink等のパッケージ管理ツールを使ってインストールというのが正道なのでしょうが、僕は野良ビルド好きなのでソースからコンパイルします。コンパイル環境はMacOSX(10.2)に付属のgcc(Developer Toolsに付属 version 1151 based on gcc version 3.1)です。
あと注意書きですが、ここで作るgccはApple拡張は施されていませんので、MacOSX付属gccの置き換えにはなりません。FinkにあるDarwinの文章が参考になるかと思います。

詳細は続きをどうぞ。

いくつかコンパイル中につまずきましたので加えた修正をここに書いておきます。『gccについて』を参考にしました。

(1)builtin-attrs.defの修正
最新のものは良くなっているのでしょうが、MacOSX版の古いgccはマクロ展開に失敗することが多いようです。gcc/c-common.cでインクルードされているbuiltin-attrs.defには、多重マクロ展開をする必要の定義があるのですが、そこでこけました。仕方がないので手動で展開をしました。

(2)storage size of `rlim' isn't known のようなエラー
<sys/resource.h>がインクルードされれば解消するようです。-DHAVE_RESOURCE_Hや-DHAVE_SYS_RESOURCE_Hを加えて単体コンパイルすれば通ります。またはconfig.hにdefineした方が楽かもしれません。

(3)stmt.cで poisoned calloc エラー
エラーが起きている箇所でreally_call_callocをxcallocに置き換えてコンパイルを通しました。

(4)cpp-precompがBus errorしてとまる
プリプロセッサがらみのエラーのようです。-no-cpp-precompオプションでgccのプリプロセッサを使うように指定してあげればコンパイルは通ります。

21:10 fenrir が投稿 : 固定リンク | | このエントリーを含むはてなブックマーク | この記事をdel.icio.usでブックマーク | トラックバック
このエントリーのトラックバックURL: http://fenrir.naruoka.org/mt/mt-tb.cgi/451
コメント
コメントする









名前、アドレスを登録しますか?
(次回以降コメント入力が楽になります)
  • 匿名でのコメントは受け付けておりません。
  • 名前(ハンドル名可)とメールアドレスは必ず入力してください。
  • メールアドレスを表示されたくないときはURLも必ず記入してください。
  • コメント欄でHTMLタグは使用できません。
  • コメント本文に日本語(全角文字)がある程度多く含まれている必要があります。
  • コメント欄内のURLと思われる文字列は自動的にリンクに変換されます。