为什么curl -V显示的OpenSSL库与ldd和curl-config不同?

wqnecbli  于 2022-11-13  发布在  其他
关注(0)|答案(1)|浏览(164)

我从源代码(在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使用的是哪个版本的最佳方法是什么?

ni65a41a

ni65a41a1#

再次查看curl -V输出,特别检查 libcurl 部分。
我会把剩下的部分剪下来让你看得更清楚:

# /usr/local/bin/curl -V
curl 7.84.0 (x86_64-pc-linux-gnu) libcurl/7.64.0

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

相关问题