Reputation: 2414
When trying to start third-party binaries under linux, I very often get an error along the lines of "libX.so.0" was not found, even though libX.so is located in my /usr/lib. I always thought just soft-linking /usr/lib/libX.so to /usr/lib/libX.so.0 would work, but I seem to have been wrong.
/usr/lib/libpng12.so.0: version `PNG12_0' not found
Is the _0 in this name related to the .0 in libpng12.so.0? If so, what exactly does it mean? Is there some way to identify the source code version I need to download from either the PNG12_0
identifier, or the libpng12.so.0 name?
Upvotes: 0
Views: 574
Reputation: 213596
I very often get an error along the lines of "libX.so.0" was not found, even though libX.so is located in my /usr/lib
You can read about external library versioning here.
Is the _0 in this name related to the .0 in libpng12.so.0?
Very likely yes.
If so, what exactly does it mean?
The symbol versioning is a GNU extension to library versioning. I can't find a good description of it, but it allows a single externally-versioned library (e.g. libc.so.6
) to provide multiple incompatible implementations of the same symbol (before symbol versioning, you had to update the external version of the library every time you introduced incompatible interface; but with symbol versioning you don't).
Long story short: the _0
means whatever developers decided it means.
Upvotes: 1