[pgsql-jp: 40228] Re: 8.4.3 リンクエラー
Tatsuo Ishii
ishii @ sraoss.co.jp
2010年 3月 22日 (月) 13:47:43 JST
石井です。
> [snaga @ devpg01 ecpg]$ ls -l ecpglib/strlcpy.*
> lrwxrwxrwx 1 snaga snaga 30 Mar 22 13:33 ecpglib/strlcpy.c -> ../../../../src/port/strlcpy.c
> -rw-rw-r-- 1 snaga snaga 767 Mar 22 13:33 ecpglib/strlcpy.o
> [snaga @ devpg01 ecpg]$
>
> ecpgをmakeした後は、こんな感じになってます。
>
> つまりは、PostgreSQLが内部で持っているstrlcpyの実装を使うはず、
> ということです。
そうですね。
> On 2010/03/22 13:35, Satoshi Nagayasu wrote:
> > 永安です。
> >
> >> postgresql-8.4.3 を make しようとしたのですが、ecpg で
> >> strlcpy が未定義でリンクエラーとなってしまいました。
> >
> > ソース読むと分かりますが、strlcpyはecpgのライブラリlibecpgに
> > ソースごと含まれていますので、外部のライブラリには依存せずに
> > 使えるはずです。
> >
> > [snaga @ devpg01 ecpg]$ ls ecpglib/
> > blibecpgdll.def descriptor.c exports.txt libecpgdll.def misc.c po
> > connect.c error.c extern.h Makefile nls.mk prepare.c
> > data.c execute.c libecpgddll.def memory.c pg_type.h typename.c
> > [snaga @ devpg01 ecpg]$
> >
> > なので、リンクエラーの原因は、おそらくコンパイル時の
> > 不具合のように思います。
> > エラー内容や環境が分からないので何とも言えませんが。
> >
> > ちなみに、私の手元では8.4.3のecpgはビルドできてます(RHEL5.4)。
> >
> >> Date: Mon, 22 Mar 2010 01:27:25 +0900
> >> From: jun kuwamura<kuwamura.jun @ gmail.com>
> >> To: PostgreSQL Japanese Mailing List<pgsql-jp @ ml.postgresql.jp>
> >> Subject: [pgsql-jp: 40225] 8.4.3 リンクエラー
> >> Message-ID:
> >> <3435af911003210927v33397dbfjeabbab65a5c1d18f @ mail.gmail.com>
> >> Content-Type: text/plain; charset=ISO-2022-JP
> >>
> >> postgresql-8.4.3 を make しようとしたのですが、ecpg で
> >> strlcpy が未定義でリンクエラーとなってしまいました。
> >>
> >> configure のオプションあるいはその他の方法(その都度
> >> strncpyに変更はしたくない)で使わないようにするには
> >> どうすれrばよいですか?
strncpyとstrlcpyは動作が異なります。strlcpyをstrncpyで機械的に置き換え
ても、最悪segfalutで落ちてしまう可能性があります。正攻法でビルドの問題
を解決した方が良いのでは。
ちなみに、手元のVine Linux 4.2では問題なくビルドできてます。
--
Tatsuo Ishii
SRA OSS, Inc. Japan
English: http://www.sraoss.co.jp/index_en.php
Japanese: http://www.sraoss.co.jp
pgsql-jp メーリングリストの案内