library mismatch in downloaded executable for Ubuntu
Brought to you by:
cannam
I saw the following on my Ubuntu 18.04 system running linux 4.15:
The executable provided in the Ubuntu download is linked against Qt5 libraries, but the code was compiled with Qt 3.3 header files.
On starting the program, over 3 dozen instances of the following (slightly misleading) message are logged to stderr:
WARNING: ResourceFinder::getOldStyleUserResourcePrefix: Building with older version of Qt (pre 5.4), resource location may be incompatible with future versions
Unexpected behavior(s) and possible code crashes can result from this kind of mismatch.
Thanks for the note! The code is compiled against Qt 5.3 headers, not 3.3. Qt guarantees backward compatibility across all 5.x releases, so compiling against 5.3 headers and running the executable with dynamic loading of any more recent 5.x will work fine as long as the two are built to compatible C++ ABIs, which in this case they are.
The warning (printed by Sonic Visualiser code, not by a library) is purely about the specific path under which private resources such as cached data are stored - an older API is being called because the preferred one did not exist in 5.3, and the result may differ from that returned by a newer API, but it shouldn't matter a great deal.
The intention of the Ubuntu build provided through the Sonic Visualiser site is to be compatible with all currently-supported versions of Ubuntu, in order to provide the latest version of Sonic Visualiser even where it is not available through official repositories. This means that a single package is provided that is intended to be compatible with everything from Ubuntu 14.04 onwards. That's why it is built against older library versions than are shipped in current non-LTS releases. In the past we have found that providing packages built against newer versions of the distro causes more problems - there are many users who don't regularly update between major distro releases. (We have a similar problem for macOS - our current build has to target 10.12 or newer for technical reasons, but a surprising number of would-be users are still using older versions of macOS even though the current one is now 10.14.)