0

在 Fedora 16 上尝试使用 ruby​​ 1.9.2-p320 构建 mysql2 gem 时,我遇到了这个错误,可以像这样重现:

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 期望可用,但我没有安装它,也找不到源.

实际上,这并不完全正确。我发现 nsslowhash 作为 Firefox 的 Mozilla-Central 构建的一部分,但是当我在已编译的 .a 和 .so 文件上运行 nm 时,它们都没有定义任何与 NSSLOW 匹配的内容。那么这些名字是从哪里来的呢?

任何帮助表示赞赏。

4

1 回答 1

0

通过将 -lfreebl3 添加到 LIBS CONFIG 设置解决了问题。

于 2012-06-30T06:26:12.347 回答