[fpc-pascal] linux: should we hard-code versioned or unversioned shared libraries in our apps?

Graeme Geldenhuys graemeg.lists at gmail.com
Wed Aug 15 13:32:34 CEST 2012


On 15 August 2012 12:10, Jonas Maebe <jonas.maebe at elis.ugent.be> wrote:
> The official way to get the unversioned symbolic links is to install the -dev or
> -devel package for that library. Of course, you're not supposed to require
> end-users to do that.

Yes, I know that bit, but even as a developer, if I don't do actual
Firebird or OpenSSL development (I don't work on those project, I
simply use there libraries), I don't need to install those libraries.
That is why my Ubuntu and OpenSUSE system didn't have the -devel
packages for them installed. FCL-db and Synapse dynamically load those
libraries on my development machines, so no -devel package

> ... that the linker will hardcode in your application. The reasoning is that your
>  application was written and tested against that version of the library, so letting
>  it use arbitrary other versions is not a good idea.

In a way I understand the reasoning for the unversioned symlink, I
just don't know how best to handle it in my apps. I also don't know
the rules as to which version the unversioned symlib will normally
point to.I know my apps work with Firebird 2.1 and Firebird 2.5, so
should I then change fcl-db to look for libfbclient.so.2 or
libfbclient.so.2.0 - instead of the unversioned default. Because the
unversioned default could very easily point to a v1.x library of
Firebird, and that would be untested with my app (it will probably not

> If you can work with multiple major versions, you can try to dynamically
> load them all until you have found one that exists.

OK, I'll take a look at this idea. That seems better, because then I
know I am trying to load library versions my app is known to work

I'm not so much concerned about my development system (I can fix that)
- I am thinking more in line of when I deploy my apps. I want them to
obviously work as easily as possible.

  - Graeme -

fpGUI - a cross-platform Free Pascal GUI toolkit

More information about the fpc-pascal mailing list