From: Koichi Takehara Date: 2001-08-23T16:31:54+09:00 Subject: [ruby-list:31089] Re: ruby on sun たけはらです。 まがらさん、神部さん、ルビービルドエラーに関する アドバイスありがとうございます。最近はJavaばっかり でCを忘れてしまったのですが、「前方参照」とかそういう 問題が昔あったのを思い出しました。gccを上げる案が 一番よさそうなのですが、他の重要な用途がありますので、 gccを上げるのが今すぐには無理です。 どうもありがとうございました。 #まがらさんの言うPKGってのを試してみたいのですが、 よかったら個別にメールでもらえませんか? m(_ _)m On Thu, 23 Aug 2001 09:04:10 +0900 Magara Yasuhiro wrote: > まがら@ライフメディアです。 > > >>>>> In [ruby-list : No.31081] > >>>>> Takahiro Kambe wrote: > > というよりも、このエラーからするとがANSI C的に正しくな > > い書き方みたいにも思えます。 > > Solaris 2.5.1と2.6では、この辺のヘッダファイルの中身も変わっていますから、 > 混ぜこぜにすればこういう事が起こり得ます。例えば、 > > ----hoge.c--- > #include > struct hoge { > int b; > dummy a; > }; > int main (int argc, char *argv[]) { > return 0; > } > ----hoge.c--- > > というソースをgcc 2.95.3でコンパイルすると > > > $ gcc -o /dev/null hoge.c > > hoge.c:4: parse error before `dummy' > > hoge.c:4: warning: no semicolon at end of struct or union > > $ > > となり、竹原さんの場合ととっても良く似たエラーを見る事になります。 > 上の例ではdummyが未定義構造体なわけですが、竹原さんの場合は、 > Solaris 2.6の上でSolaris 2.5.1用のgccを使った結果、 > /usr/local/lib/gcc-lib/sparc-sun-solaris2.5.1/2.7.2.2/include/ > の下にあるヘッダファイルと/usr/includeにある物の間で、想定されている > 構造体の種類が違ってしまってるんだと思います。 > > > こういった場合のために、gccってインストールの時にシステムのヘッダ・ファ > > イルを自前用に正しく修正したものを作るとか、してたと思います。それ用の > > スクリプト(fixincludes何とか)がバイナリ配布でも含まれていたら、それで > > 作り直すのも手ではないかと思います。 > > そうやってSolaris 2.5.1の上で作られたのが > /usr/local/lib/gcc-lib/sparc-sun-solaris2.5.1/2.7.2.2/include/ > の下に置いてあるんですよね? これが2.6用になれば直るでしょうが、 > それならgcc入れ直しの方が苦労は少ないと思います。 > > > というわけで、確実なのはgccをソースからインストールしてしまう方法かな。 > > かな。または公開packageを使う(まだ言う :-p)。 > 同じSolaris 2.6を使って作られたpackageなら、こういう不整合は起きないでしょう。 > > あと、自分でソースからビルドするのもいいのですが、その際には自分でpackageを > 作る事をお勧めします。二台目以降のインストールや、バージョンアップが断然楽です。 > Solarisでpackage作るのって、意外と簡単ですよ。 > > -- > まがらやすひろ