- - PR -
PostgreSQLのmakeエラーについて
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 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成功しました。 以上、宜しくお願いします。 |
|
投稿日時: 2005-10-07 20:43
回答じゃありませんが、ちょっと興味があるので書き込んでみます。
(実際のソースを見てみないと確かな事が分からないので想像ですがご容赦を。) まず、Postgresをコンパイルする場合、user は Postgres にしておいた方がいいです。 (これは、Postgresに「他のユーザにデータディレクトリを触らせるのはよくない」、といったポリシーがある為です。) 次に「文法エラー が '{' トークンの前にあります」という所ですが、恐らくすでにインストールされているヘッダファイルとそのソースで想定されているヘッダファイルが違うのだと思います。 (想定されているマクロが定義されていない、とか) 解決策としては、そのバージョンのソースで想定されているヘッダ類(とライブラリ)にバージョンアップする・・・なのですが、今回7.3.10でうまくmake出来たのに7.1.3で出来なかった訳ですね? だとすると、ライブラリ群のダウングレードが必要となる訳で、相当慣れた人で無いと難しいと思います。 ---------------------------------- バージョンを間違えたので修正 [ メッセージ編集済み 編集者: 冬寂 編集日時 2005-10-07 20:44 ] |
|
投稿日時: 2005-10-07 21:32
gcc 2.95 系で試す。
glibc のバージョンも下がる思うけど・・・ |
|
投稿日時: 2005-10-07 21:38
postgresql-7.1.3 となると相当古いですね。
gcc-3.2.3 に対応していない可能性がありますね。 コブラさんが指摘されているように gcc-2.96 あたりを使われるのがよいかもしれません。 $ make distclean $ export CC=gcc296 $ ./configure ...... $ make ...... |
|
投稿日時: 2005-10-13 15:31
いつもお世話になっております。
返信頂いたみなさまありがとうございました。 結局、時間的都合もあって、これ以上原因は追わずに rpmでインストールしました。LANGをCとかに変更しましたが ダメでした。 オープンソースもの(1個人のも含め)で、よく 必要なライブラリは自分で追加して、適当に インストールしてというのはありますが、 PostgreSQLほど有名でこんなのがあるのは、 ちょっと信じられないなという印象です。 でも実際エラーは出てますし、不明です。 有益な情報提供できずにすみません。 ありがとうございました。 |
|
投稿日時: 2005-10-13 21:41
適切なバージョンのコンパイラー、 binutils を選択せんかった場合、ようありますな。
|
1