Home > database >  Why does curl -V show a different OpenSSL library than ldd and curl-config?
Why does curl -V show a different OpenSSL library than ldd and curl-config?

Time:09-01

I built curl from the source (on Debian 10 machine) as follows:

LD_LIBRARY_PATH=/usr/local/openssl3.0/lib64 ./configure --with-openssl=/usr/local/openssl3.0

make

make install

When I went to check the version of my new build of curl, I don't see OpenSSL 3 in the output:

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

This output shows OpenSSL/1.1.1n.

However, curl-config looks correct:

root@ip-10-0-0-252:/usr/local/bin# ./curl-config  --ssl-backends 
OpenSSL v3 

And ldd looks correct:

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)
...

Why is the output different from curl -V different from the others? What's the best way to prove which version of OpenSSL curl is using?

CodePudding user response:

Look at the curl -V output again and check the libcurl part in particular.

I'll cut away the rest for you to make it more obvious:

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

curl 7.84.0, with libcurl 7.64.0

This tells you that when you invoke that 'curl' binary, it finds an older libcurl and not the one you built and probably intends for curl to use.

You have not configured your ld.so to find it in that path. You can edit /etc/ld.so.conf, set LD_LIBRARY_PATH` or similar to address it.

  • Related