我正在尝试将我的代码与依赖于 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
这是 ldd 在 libX 上的输出:
$ 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)
...