[pgsql-jp: 28777] Re: インクルードファイル

石田雅也 ishida_m @ 15jam.jp
2003年 1月 26日 (日) 12:25:09 JST


石田です。
たびたびのご指摘ありがとうございます。
ご指摘されていることの意味はわりしました。
自分の勉強不足ですね。
もう少し、勉強してみます。
それでわからなければ、またお聞きしますので
そのときよろしくお願いします。
-- 
石田雅也 <ishida_m @ 15jam.jp>


On Sun, 26 Jan 2003 12:02:18 +0900 (JST)
Kazumasa Gotoh <kgotoh @ cic-kk.co.jp> wrote:

> 
> From: 石田雅也 <ishida_m @ 15jam.jp>
> Date: Sun, 26 Jan 2003 11:32:25 +0900
> 
> > > crypt() が未解決外部参照となっているのです。
> > 記述が不足していました。申し訳ありません。
> > cryptの問題ということはわかっていたのですが、
> > cryot.hは/usr/include/に存在しています。
> 
> いや、ですから「コンパイル時」の問題なのではなく「リンケージ時」の
> 問題なのです。そこを取り違えると話がずれます。
> 
> あなたが引用したメッセージにある通り、crypt() は libpq の fe-auth()
> から参照されています。したがって、ヘッダファイルの存在の有無は
> 今回の問題に限って言えば関係ありません。
> 
> > 書き忘れていたので、あとで再投稿しました。
> 
> 「自分が何をしたか」が書かれていません。今回のケースで言えば、
> 「どんなコマンドを投入してリンケージを行ったか」が不明です。
> 
> 結局、石田さんは Unix 系 OS で C を使って開発するという事に
> 関して、基本的な知識が足りない部分があるように私は見受けられます。
> いや、本当は C で開発する場合は Windows 系でも同じ事なのですが、
> Visual Studio 環境下などで WIN32 の標準 API だけを使っていると
> この点が顕在化しないだけのことです。
> # ある意味では、ツールが面倒な部分を隠蔽化しているとも言える。
> 
> まぁ、「はじめて使ったコンピュータは Windows マシンでした」という
> 人にはありがちな事ですので、おいおい勉強してゆけばよいでしょう。
> 
> おそらくは crypt() を含んだライブラリはそのマシンにも存在している
> と思います。つまり、リンケージオプションが足りないのでしょう。
> 
> 「具体的にどうすればよいのか」というのは、OS などの環境依存です。
> 経験があれば PostgreSQL のドキュメントを読むだけでわかるはずですし、
> 先のエラーメッセージだけで「あぁ…」とわかるはずですが、例えば
> PostgreSQL のソースを展開して Configure した後に、psql などの
> libpq を使っているプログラムの Makefile を見るという方法もあります。
> 
> こうすれば、どんなライブラリの指定が必要かがわかるでしょう。
> psql の Makefile にはあなたが書いたプログラムには不要なライブラリも
> 指定されているでしょうが、そこは調べればわかる事です。
> 
> Makefile の読み方がわからなければ make のマニュアルを読みましょう。
> 読み方がわかっても、そこに書かれている意味がわからなければ、
> リンカである ld や Linux のマニュアルを読みましょう。
> 
> =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
> (株) セントラル情報センター
>                              後藤和政    kgotoh @ cic-kk.co.jp




pgsql-jp メーリングリストの案内