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

Kazumasa Gotoh kgotoh @ cic-kk.co.jp
2003年 1月 26日 (日) 10:58:14 JST


From: 石田雅也 <ishida_m @ 15jam.jp>
Date: Sun, 26 Jan 2003 10:05:55 +0900

> /usr/lib/gcc-lib/i386-redhat-linux/2.96/../../../libpq.a(fe-auth.o): In 
> function `pg_password_sendauth':
> fe-auth.o(.text+0x148): undefined reference to `crypt'
> collect2: ld returned 1 exit status
> 
> たぶんインクルードが何か足りないからだと思うのですが、
> どなたか助言をお願いします。

エラーメッセージそのものに何が足りないか書いてありますよ?
メッセージの意味は理解しようとしたのでしょうか?

   fe-auth.o(.text+0x148): undefined reference to `crypt'

crypt() が未解決外部参照となっているのです。
それから、ご自分の環境などに関する記述がありません。お約束ですが、

  http://www.hyuki.com/writing/techask.html

などを参照してから投稿することをお奨めします。メッセージの一部の
文字列から RedHat らしい事は推察できますが、バージョンなどに関しては
まるでわかりませんし、PostgreSQL のバージョンやどのようにして
インストールしたものかもわかりません。

「crypt() がないといわれる」というのは、これまで何度か質問が出ていた
ような気もしますので(確信はありませんが)、この ML の過去ログ検索とか、
google などの検索エンジンを使って検索すると何か出てくるかも知れません。

基本的には「無い」と言われる関数は用意するしかありません。
そちらの環境でライブラリそのものがないのか、リンケージ時にライブラリを
指定していないかは知りませんが、ともかくリンカが見つけられるようにして
あげる必要があるという事です。

Windows 系の Visual なんちゃらとかいう、「とーごーかんきょー」しか
知らない人は問題の存在そのものがよく理解できない事も多いようですが、
この手の話は Unix 系 OS で C を使い開発を行う際には「基礎中の基礎」
というべき部分です。

私は FreeBSD 派なので、Linux は必要に迫られる場合以外は基本的に
触りませんが、先日ある用途のためにインストールした RedHat 7.2 では
crypt() は存在します。
このマシンはほとんど何も考えずにデフォルトインストールしたものです。

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
(株) セントラル情報センター
                             後藤和政    kgotoh @ cic-kk.co.jp



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