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に一致するものはどれも定義されません。では、これらの名前はどこから来たのでしょうか?
助けていただければ幸いです。