68user's page 掲示板

Prev< No. 1931> Next  [最新発言に戻る] [過去ログ一覧]
No. 1931 # 68user 2001/05/07 (月) 16:32:42
>>1930 XRD
> 自分なりの解釈としては、コンパイラのせいではなく、リンクの
> 失敗ではないかと思っています。
その通りです。

コンパイル済の dbm_open の実体 (=オブジェクト) が、標準 C
ライブラリの libc.so.* に含まれていないのでリンク時にエラーに
なっているわけです。なので、dbm 関係のライブラリ名を指定しないと
いけません。探し方はこちら。
    http://www.jp.FreeBSD.org/QandA/HTML/1609.html

というわけで、手元の LASER5 Linux で
    % nm -o /lib/*.so.* /usr/lib/*.so.* | grep ' T ' | grep dbm_open
試すと、
    /lib/libdb1.so.2:00009d70 T dbm_open
    /lib/libdb.so.2:00009d70 T dbm_open
    /usr/lib/libgdbm.so.2:00002230 T dbm_open
    /usr/lib/libgdbm.so.2.0.0:00002230 T dbm_open
となりますので、cc -ldb -L/lib とか、cc -lgdbm -L/usr/lib すれば
よいことがわかります。libdb の方は ndbm で、libgdbm の方は gdbm
でしょうが、どちらがよいかはわかりません。

で、splitword と unescape_url の方は
    http://home.impress.co.jp/books/ietech/CGI.contents.html

    ソースコードのリスト → cgiutils.h, cgiutils.c
のところにあります。これをリンクするよう記述があったのでしょうが
見落としておられるのではないでしょうか。

Prev< No. 1931> Next  [最新発言に戻る] [過去ログ一覧]