我正在尝试将我的代码链接到依赖于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)
...
答案 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。