elieserdejesus / JamTaba

Jamtaba is a software to play online music jam sessions.
http://www.jamtaba.com
245 stars 49 forks source link

error while loading shared libraries: libdouble-conversion.so.1 #1321

Open arnaudlecam opened 4 years ago

arnaudlecam commented 4 years ago

JamTaba won't run on some Linux distributions (ex.: Arch based distro), because of calls to outdated libdouble-conversion (cannot open shared object file: No such file or directory). It's needs a manual linkage to work: sudo ln -s libdouble-conversion.so.3.1.5 libdouble-conversion.so.1

elieserdejesus commented 4 years ago

@arnaudlecam , I'm not linking libdouble-conversion in JamTaba. So I suppose Qt is linking this library. Can you help investigating this issue?

arnaudlecam commented 4 years ago

I'm suspecting a relation with glibc release 2.31 (as commented):

The functions that round their results to a narrower type now have corresponding type-generic macros in , as defined in TS 18661-1:2014 and TS 18661-3:2015 as amended by the resolution of Clarification Request 13 to TS 18661-3.

I'll try to investigate.

arnaudlecam commented 4 years ago

Hi @elieserdejesus , Much more simple in fact... I suppose JamTaba's Linux binary version was built with an Ubuntu 18.04 Qt5 (5.9.5). In this case, libdouble-conversion.so.1 is provided by "libdouble-conversion1" package (needed by libqt5core5a). Lots of Linux distributions are using different Qt5 versions:

And so on... Manual symlinking into /usr/lib/ is not a good solution, and shouldn't be a persistent one:

Here are solutions I see:

elieserdejesus commented 4 years ago

Static linking;

Static link the lib or entire Qt?

arnaudlecam commented 4 years ago

I would say "the lib", because libdouble-conversion is just a Qt depedency on Linux systems. Most of time, Linux packaging systems resolves those issues when installing a package:

Libs are provided as packages on Linux: so they are not statically build, but shared and considered as package depedencies most of time. Doing this, Linux systems are to be "ligth weight" systems. (a package also describes where files have to be copied on "installation", wich one have to be deleted on "uninstall", and wich one have to be deleted on "purge": so it provides coherence and stability to a Linux system).

raymond-lemarron commented 3 years ago

hi I confirm the issue on Ubuntu 20.04. Is there any ideas to solve the problem? A branch with upgrade on Qt 5.11.x is planned? Thx 4 your job!

brylie commented 3 years ago

I can confirm this issue exists when running Jamtaba2.sh on Ubuntu 20.04. However, the Jamtaba2 binary runs without any error.

ericfont commented 3 years ago

fyi, I'm on Debian 11, and there is only a libdouble-conversion3 package, but not libdouble-conversion1 package. This means that Jamtaba.sh doesn't work on a fresh install:

e@efjz:~/Jamtaba2$ ./Jamtaba2.sh 
/home/e/Jamtaba2/./Jamtaba2: error while loading shared libraries: libdouble-conversion.so.1: cannot open shared object file: No such file or directory
e@efjz:~/Jamtaba2$ sudo apt search libdouble-conversion
Sorting... Done
Full Text Search... Done
libdouble-conversion-dev/testing,unstable,now 3.1.5-6.1 amd64 [installed]
  routines to convert IEEE floats to and from strings (development files)

libdouble-conversion3/testing,unstable,now 3.1.5-6.1 amd64 [installed]
  routines to convert IEEE floats to and from strings

e@efjz:~/Jamtaba2$ ls /usr/lib/
Display all 169 possibilities? (y or n)
e@efjz:~/Jamtaba2$ ls /usr/lib/x86_64-linux-gnu/libdouble-conversion.
libdouble-conversion.a       libdouble-conversion.so      libdouble-conversion.so.3    libdouble-conversion.so.3.1 
e@efjz:~/Jamtaba2$ sudo apt-get install libdouble-conversion1
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
E: Unable to locate package libdouble-conversion1

EDIT: Turns out the solution for me was easy enough...simply append deb http://deb.debian.org/debian buster main to my /etc/apt/sources.list (since libdouble-conversion1 is available in Debian 10 "buster"), and then do sudo apt update and sudo apt install libdouble-conversion1 and it works.

palotian commented 2 years ago

Gosh, just found this thread. I got myself to the linking solution before finding this. Thanks you all!!