未定义引用'SHA512@OPENSSL_0.9.8'

时间:2012-11-23 11:24:09

标签: ssl ld

我正在尝试将我的代码链接到依赖于libcrypto.so的共享库(“libX.so”)。我安装了libcrypto.so.1.0.0,但似乎特别需要libcrypto.so.0.9.8。有没有办法让它与1.0.0链接?我不能在我的系统(archlinux)上安装0.9.8而不破坏其他软件包。

/usr/bin/ld: warning: libcrypto.so.0.9.8, needed by /usr/local/lib/libX.so, not found (try using -rpath or -rpath-link)
/usr/local/lib/libX.so: undefined reference to `SHA512@OPENSSL_0.9.8'
...

编辑:

我应该添加更多信息。我已经尝试编译openssl 0.9.8并安装到前缀/ usr / local。但即使它似乎找到了这个库,构建时仍然存在错误:

/usr/local/lib/libX.so: undefined reference to `SHA512@OPENSSL_0.9.8'
...

libcrypto确实似乎定义了这个:

$ nm /usr/local/ssl/lib/libcrypto.so.0.9.8 | grep SHA512
000000000006f9b0 T SHA512
...

我使用以下脚本编译:

export LD_LIBRARY_PATH+=:/usr/local/ssl/lib
gcc -I/usr/local/include/ test.c -o test -lX

这是libX上ldd的输出:

$ ldd /usr/local/lib/libX.so              
/usr/local/lib/libX.so: /usr/local/ssl/lib/libcrypto.so.0.9.8: no version information available (required by /usr/local/lib/libX.so)
libssl.so.0.9.8 => /usr/local/ssl/lib/libssl.so.0.9.8 (0x00007f9c4e329000)
libcrypto.so.0.9.8 => /usr/local/ssl/lib/libcrypto.so.0.9.8 (0x00007f9c4df99000)
...

2 个答案:

答案 0 :(得分:1)

参考http://forums.gentoo.org/viewtopic-t-835256-start-0.html

openssl-0.9.8l-sym-version-felixrabe.patch对我来说很好!

答案 1 :(得分:0)

因为原始的OpenSSL库是使用版本脚本构建的。这是一个功能,因此您可以拥有不同版本的库,并仍然可以获得正确的符号。

您可以添加自己的样子:

OPENSSL_0.9.8 {
 *;
};

然后链接--version-script

要使OpenSSL执行此操作,您可能需要编辑Makefile。