Postby gawrilow » 25 Feb 2023, 10:32
This is a general behavior of dynamic linking, nothing specific for polymake or Singular. When you link against a shared library, the linker records the SONAME property of that library in the produced binary as NEEDED property. Later, when it's executed, the dynamic loader looks for a library having this SONAME. You can check the SONAME and NEEDED properties using a command objdump -x; ldconfig -p will tell you the current mapping from SONAME strings to files installed on your system. So far the general theory.
In projects using semantic versioning schema, it's usual to trim SONAMEs after the major version, because changes in minor and patch versions are supposed to preserve backward compatibility. Please ask the Singular team whether they use this schema and if yes, why they are not setting appropriate SONAMEs in their build scripts. It could be a simple mistake or done on purpose, who knows...
For the time being, you can either rebuild polymake or try to trick out the dynamic loader. Rebuilding should be fast unless you already destroyed your polymake build tree. Tricking out would simply mean making a symlink libSingular-4.3.1.so -> libSingular-4.3.2.so. But if there are incompatible changes behind this upgrade, despite the innocent patch version bump, the stability of polymake will not be guaranteed as soon as you will use any function calling into Singular.