- PR -

PostgreSQLのmakeエラーについて

1
投稿者投稿内容
doronpa
会議室デビュー日: 2004/03/07
投稿数: 16
投稿日時: 2005-10-07 20:14
いつもお世話になっております。

PostgreSQLのmakeに失敗します。
原因並びに回避方法をご存知の方がいましたら
教えてください。

環境:
・postgresql-7.1.3
・White Box Enterprise Linux release 3.0
・gcc-3.2.3-34

エラーが起きた状況:
(rootユーザで実行しています。)
# mv ./postgresql-7.1.3.tar.gz /usr/local/src
# tar xzvf postgresql-7.1.3.tar.gz
# cd ./postgresql-7.1.3
# ./configure --enable-multibyte=EUC_JP --prefix=/opt/postgres-7.1.3/
--with-perl
# make (ここでエラーが起きます。)

エラーの内容:
makeの吐くエラーをファイルに落としたものです。
下記のコマンドを実行
make > ファイル名 2>&1
長いので、3つ程抜き出して載せます。

==============1つ目 Start=========================================
../../../../src/include/catalog/pg_attribute.h:43: 文法エラー が '{' トークンの前にあります
../../../../src/include/catalog/pg_attribute.h:156: 文法エラー が '}' トークンの前にあります
../../../../src/include/catalog/pg_attribute.h:156: 警告: `FormData_pg_attribute' の宣言で型がデフォルトの `int' とされました
../../../../src/include/catalog/pg_attribute.h:156: 警告: データ定義が型や記憶クラスを持っていません
../../../../src/include/catalog/pg_attribute.h:170: 文法エラー が '*' トークンの前にあります
==============1つ目 End=========================================


==============2つ目 Start=========================================
../../../../src/include/catalog/pg_am.h:38: 文法エラー が '{' トークンの前にあります
../../../../src/include/catalog/pg_am.h:66: 文法エラー が '}' トークンの前にあります
../../../../src/include/catalog/pg_am.h:66: 警告: `FormData_pg_am' の宣言で型がデフォルトの `int' とされました
../../../../src/include/catalog/pg_am.h:66: 警告: データ定義が型や記憶クラスを持っていません
../../../../src/include/catalog/pg_am.h:73: 文法エラー が '*' トークンの前にあります
../../../../src/include/catalog/pg_am.h:73: 警告: `Form_pg_am' の宣言で型がデフォルトの `int' とされました
../../../../src/include/catalog/pg_am.h:73: 警告: データ定義が型や記憶クラスを持っていません
==============2つ目 End=========================================



==============3つ目 Start=========================================
../../../../src/include/utils/rel.h:63: `FUNC_MAX_ARGS' がここでは定義されていません (関数の中ではない)
../../../../src/include/utils/rel.h:97: 文法エラー が "Form_pg_am" の前にあります
../../../../src/include/utils/rel.h:97: 警告: struct や union の最後にセミコロンがありません
../../../../src/include/utils/rel.h:98: 警告: `rd_rel' の宣言で型がデフォルトの `int' とされました
../../../../src/include/utils/rel.h:98: 警告: データ定義が型や記憶クラスを持っていません
../../../../src/include/utils/rel.h:102: 文法エラー が "rd_att" の前にあります
../../../../src/include/utils/rel.h:102: 警告: `rd_att' の宣言で型がデフォルトの `int' とされました
../../../../src/include/utils/rel.h:102: 警告: データ定義が型や記憶クラスを持っていません
../../../../src/include/utils/rel.h:108: 文法エラー が '}' トークンの前にあります
../../../../src/include/utils/rel.h:108: 警告: `RelationData' の宣言で型がデフォルトの `int' とされました
../../../../src/include/utils/rel.h:108: 警告: データ定義が型や記憶クラスを持っていません
../../../../src/include/utils/rel.h:110: 文法エラー が '*' トークンの前にあります
../../../../src/include/utils/rel.h:110: 警告: `Relation' の宣言で型がデフォルトの `int' とされました
../../../../src/include/utils/rel.h:110: 警告: データ定義が型や記憶クラスを持っていません
../../../../src/include/utils/rel.h:119: 文法エラー が '*' トークンの前にあります
../../../../src/include/utils/rel.h:119: 警告: `RelationPtr' の宣言で型がデフォルトの `int' とされました
../../../../src/include/utils/rel.h:119: 警告: データ定義が型や記憶クラスを持っていません
../../../../src/include/utils/rel.h:248: 文法エラー が "relation" の前にあります
../../../../src/include/storage/bufpage.h:18 から include されたファイル内,
../../../../src/include/access/htup.h:17 から,
../../../../src/include/access/heapam.h:18 から,
heaptuple.c:23 から:
../../../../src/include/storage/bufmgr.h:161: 文法エラー が "relation" の前にあります
../../../../src/include/storage/bufmgr.h:163: 文法エラー が "reln" の前にあります
../../../../src/include/storage/bufmgr.h:166: 文法エラー が "Relation" の前にあります
../../../../src/include/storage/bufmgr.h:178: 文法エラー が "relation" の前にあります
../../../../src/include/storage/bufmgr.h:179: 文法エラー が "rel" の前にあります
../../../../src/include/storage/bufmgr.h:180: 文法エラー が "rel" の前にあります
../../../../src/include/access/xlog.h:15 から include されたファイル内,
../../../../src/include/storage/bufpage.h:23 から,
../../../../src/include/access/htup.h:17 から,
../../../../src/include/access/heapam.h:18 から,
heaptuple.c:23 から:
==============3つ目 End=========================================

質問:
このような文法エラーが大量にでます。エラーの内容を見ながら1つ1つ
直すという方法もあるのですが、たくさんあるので厳しいです。
どこか1つがこのエラーの大きな原因になっているというので
あればそれを知りたいです。ご存知の方いますでしょうか?
このPostgreSQL7.1.3ってこういうものなのでしょうか?
このバージョンにどうしてもこだわらなくてはいけないというわけでは
ないのでバージョンを変えるという作戦もありますが、
原因がしりたいのでお願い致します。
因みに7.2.8、7.3.10ではmake成功しました。

以上、宜しくお願いします。
冬寂
ぬし
会議室デビュー日: 2002/09/17
投稿数: 449
投稿日時: 2005-10-07 20:43
回答じゃありませんが、ちょっと興味があるので書き込んでみます。
(実際のソースを見てみないと確かな事が分からないので想像ですがご容赦を。)

まず、Postgresをコンパイルする場合、user は Postgres にしておいた方がいいです。
(これは、Postgresに「他のユーザにデータディレクトリを触らせるのはよくない」、といったポリシーがある為です。)

次に「文法エラー が '{' トークンの前にあります」という所ですが、恐らくすでにインストールされているヘッダファイルとそのソースで想定されているヘッダファイルが違うのだと思います。
(想定されているマクロが定義されていない、とか)

解決策としては、そのバージョンのソースで想定されているヘッダ類(とライブラリ)にバージョンアップする・・・なのですが、今回7.3.10でうまくmake出来たのに7.1.3で出来なかった訳ですね?
だとすると、ライブラリ群のダウングレードが必要となる訳で、相当慣れた人で無いと難しいと思います。
----------------------------------
バージョンを間違えたので修正

[ メッセージ編集済み 編集者: 冬寂 編集日時 2005-10-07 20:44 ]
コブラ
ぬし
会議室デビュー日: 2003/07/18
投稿数: 1038
お住まい・勤務地: 神奈川
投稿日時: 2005-10-07 21:32
gcc 2.95 系で試す。
glibc のバージョンも下がる思うけど・・・
あんとれ
ぬし
会議室デビュー日: 2004/01/14
投稿数: 556
投稿日時: 2005-10-07 21:38
postgresql-7.1.3 となると相当古いですね。
gcc-3.2.3 に対応していない可能性がありますね。
コブラさんが指摘されているように gcc-2.96 あたりを使われるのがよいかもしれません。

$ make distclean
$ export CC=gcc296
$ ./configure ......
$ make
......
doronpa
会議室デビュー日: 2004/03/07
投稿数: 16
投稿日時: 2005-10-13 15:31
いつもお世話になっております。

返信頂いたみなさまありがとうございました。
結局、時間的都合もあって、これ以上原因は追わずに
rpmでインストールしました。LANGをCとかに変更しましたが
ダメでした。
オープンソースもの(1個人のも含め)で、よく
必要なライブラリは自分で追加して、適当に
インストールしてというのはありますが、
PostgreSQLほど有名でこんなのがあるのは、
ちょっと信じられないなという印象です。
でも実際エラーは出てますし、不明です。
有益な情報提供できずにすみません。
ありがとうございました。


コブラ
ぬし
会議室デビュー日: 2003/07/18
投稿数: 1038
お住まい・勤務地: 神奈川
投稿日時: 2005-10-13 21:41
適切なバージョンのコンパイラー、 binutils を選択せんかった場合、ようありますな。
1

スキルアップ/キャリアアップ(JOB@IT)