0

Fedora16でruby1.9.2-p320を使用してmysql2gemをビルドしようとしたときに、次のように再現可能なこのエラーが発生しました。

gremlin:mysql2 $ cat conftest.c
    #include "ruby.h"

    /*top*/
    int main() {return 0;}
    int t() {
      void ((*volatile p)());
      p = (void ((*)()))rb_thread_blocking_region;
      return 0;
    }

gremlin:mysql2 $ gcc -o conftest -I/usr/local/include/ruby-1.9.1/i686-linux \
    -I/usr/local/include/ruby-1.9.1/ruby/backward 
    -I/usr/local/include/ruby-1.9.1 -I. 
    -I/usr/local/include/ruby-1.9.1/  
    -D_FILE_OFFSET_BITS=64   -O3 -ggdb -Wextra -Wno-unused-parameter 
    -Wno-parentheses -Wpointer-arith -Wwrite-strings -Wno-missing-field-initializers
    -Wno-long-long conftest.c  -L. -L/usr/local/lib -Wl,-R/usr/local/lib -L.  
    -rdynamic -Wl,-export-dynamic     -Wl,-R -Wl,/usr/local/lib -L/usr/local/lib 
    -lruby-static  -lpthread -lrt -ldl -lnss3 -lcrypt -lm   -lc

    /usr/lib/gcc/i686-redhat-linux/4.6.3/../../../libcrypt.a(md5-crypt.o): 
    In function `__md5_crypt_r':
            (.text+0x96): undefined reference to `NSSLOW_Init'

    /usr/lib/gcc/i686-redhat-linux/4.6.3/../../../libcrypt.a(md5-crypt.o): 
    In function `__md5_crypt_r':
            (.text+0xb1): undefined reference to `NSSLOWHASH_NewContext'

...およびnsslowhashライブラリ内の他のグローバル関数に関するその他のメッセージ。/usr/lib/libcrypt.aが使用可能であると想定しているように見えますが、インストールされておらず、のソースが見つかりません。 。

実際、それは完全に真実ではありません。Firefox用のMozilla-Centralビルドの一部としてnsslowhashを見つけましたが、コンパイルされた.aファイルと.soファイルでnmを実行すると、NSSLOWに一致するものはどれも定義されません。では、これらの名前はどこから来たのでしょうか?

助けていただければ幸いです。

4

1 に答える 1

0

-lfreebl3 を LIBS CONFIG 設定に追加することで問題が解決しました。

于 2012-06-30T06:26:12.347 に答える