I’ve also encountered this libcurl issue. I’m not deeply familiar with Linux though. That’s why this post is quite verbose…
Compile a standalone application with JUCE_USE_CURL enabled in Ubuntu 16.04. Try to launch it in Ubuntu 18.04. It won’t launch, you’ll get
/usr/lib/x86_64-linux-gnu/libcurl.so.4: version `CURL_OPENSSL_3' not found
Do it the other way around and it won’t launch either:
/usr/lib/x86_64-linux-gnu/libcurl.so.4: version `CURL_OPENSSL_4' not found
Under Ubuntu 16.04, the latest available libcurl is version 4.4.0
(apt policy libcurl4-openssl-dev -> 7.47.0-1ubuntu2.8):
/usr/lib/x86_64-linux-gnu$ ll libcurl*
-rw-r--r-- 1 root root 947448 Mai 9 15:12 libcurl.a
lrwxrwxrwx 1 root root 19 Mai 9 15:12 libcurl-gnutls.so.3 -> libcurl-gnutls.so.4
lrwxrwxrwx 1 root root 23 Mai 9 15:12 libcurl-gnutls.so.4 -> libcurl-gnutls.so.4.4.0
-rw-r--r-- 1 root root 444800 Mai 9 15:12 libcurl-gnutls.so.4.4.0
-rw-r--r-- 1 root root 953 Mai 9 15:11 libcurl.la
lrwxrwxrwx 1 root root 16 Mai 9 15:12 libcurl.so -> libcurl.so.4.4.0
lrwxrwxrwx 1 root root 12 Mai 9 15:12 libcurl.so.3 -> libcurl.so.4
lrwxrwxrwx 1 root root 16 Mai 9 15:12 libcurl.so.4 -> libcurl.so.4.4.0
-rw-r--r-- 1 root root 452992 Mai 9 15:12 libcurl.so.4.4.0
Under Ubuntu 18.04, the latest available libcurl is version 4.5.0
(apt policy libcurl4-openssl-dev -> 7.58.0-2ubuntu3.1):
/usr/lib/x86_64-linux-gnu$ ll libcurl*
-rw-r--r-- 1 root root 1057664 Mai 8 19:47 libcurl.a
lrwxrwxrwx 1 root root 19 Mai 8 19:47 libcurl-gnutls.so.3 -> libcurl-gnutls.so.4
lrwxrwxrwx 1 root root 23 Mai 8 19:47 libcurl-gnutls.so.4 -> libcurl-gnutls.so.4.5.0
-rw-r--r-- 1 root root 510408 Mai 8 19:47 libcurl-gnutls.so.4.5.0
-rw-r--r-- 1 root root 951 Mai 8 19:47 libcurl.la
lrwxrwxrwx 1 root root 16 Mai 8 19:47 libcurl.so -> libcurl.so.4.5.0
lrwxrwxrwx 1 root root 16 Mai 8 19:47 libcurl.so.4 -> libcurl.so.4.5.0
-rw-r--r-- 1 root root 518600 Mai 8 19:47 libcurl.so.4.5.0
Where does the symbol CURL_OPENSSL_3/4 come from?
“That symbol looks like something Debian/Ubuntu have introduced. There is no such name (CURL_OPENSSL_3) in any curl source code or build script that comes from us.” (https://github.com/curl/curl/issues/2433)
One extreme solution that works… and most likely breaks a lot of other applications: Downgrade libcurl in Ubuntu 18.04
- Add the 16.04 repository “deb http://archive.ubuntu.com/ubuntu xenial-updates universe main” to the /etc/apt/sources.list in 18.04.
- sudo apt install libcurl3=7.47.0-1ubuntu2.8 libcurl4-openssl-dev=7.47.0-1ubuntu2.8 -t xenial-updates
@fabian, @dave96 Any idea of a proper way to deal with this (with a closed source application)? IIRC libraries are not meant to be bundled with binaries under Linux.
Does someone have experience with JUCE and https://snapcraft.io? Probably not going to work with an audio plugin…