我从源代码(在Debian 10机器上)构建了curl,如下所示:LD_LIBRARY_PATH=/usr/local/openssl3.0/lib64 ./configure --with-openssl=/usr/local/openssl3.0
make
个make install
当我检查curl的新版本时,在输出中看不到OpenSSL 3:
root@ip-10-0-0-252:/usr/local/bin# /usr/local/bin/curl -V
curl 7.84.0 (x86_64-pc-linux-gnu) libcurl/7.64.0 OpenSSL/1.1.1n zlib/1.2.11 libidn2/2.0.5 libpsl/0.20.2 (+libidn2/2.0.5) libssh2/1.8.0 nghttp2/1.36.0 librtmp/2.3
此输出显示OpenSSL/1.1.1n
。
但是,curl-config看起来是正确的:
root@ip-10-0-0-252:/usr/local/bin# ./curl-config --ssl-backends
OpenSSL v3+
而ldd看起来是正确的:
root@ip-10-0-0-252:/usr/local/bin# ldd /usr/local/bin/curl
linux-vdso.so.1 (0x00007fffc4ddd000)
libcurl.so.4 => /lib/x86_64-linux-gnu/libcurl.so.4 (0x00007fea3312a000)
libssl.so.3 => /usr/local/openssl3.0/lib64/libssl.so.3 (0x00007fea33082000)
libcrypto.so.3 => /usr/local/openssl3.0/lib64/libcrypto.so.3 (0x00007fea32c20000)
...
为什么curl -V
的输出与其他版本不同?证明OpenSSL curl使用的是哪个版本的最佳方法是什么?
1条答案
按热度按时间ni65a41a1#
再次查看
curl -V
输出,特别检查 libcurl 部分。我会把剩下的部分剪下来让你看得更清楚:
curl 7.84.0,使用libcurl 7.64.0
这告诉您,当您调用'curl'二进制文件时,它会找到一个较旧的libcurl,而不是您构建的那个,并且可能打算让curl使用。
您尚未将www.example.com设定ld.so为在该路径中寻找。您可以编辑
/etc/ld.so.conf
、设定LD_LIBRARY_PATH
或类似的设定来修正它。如果你要编辑ld.so.conf,记得
sudo ldconfig
。