On Tue, 2010-08-17 at 11:56 -0300, Leandro de Oliveira wrote: > I thought not having a versionless symlink was a bug, but it seems to > be an explicit decision, if that is the case, then java apps using > bluetooth will always need the user to install libbluetooth-dev > instead of being able to work with the latest version. Since backwards > compatibility should be a given, I don't see why there coudn't be a > versionless symlink.
But, backward compatibility is NOT a given; that's why we have versioned libraries in the first place. In a POSIX-y system like Linux, shared library versions work like this typically: the library filename is "libfoo.so.x.y" where "x" is the major version and "y" (which might have multiple parts) is the minor version. The rules are that any changes that do not modify the library ABI can change only the "y" version but leave the "x" version the same, and these can be used without recompiling code. Any changes the modify the library ABI _must_ change the "x" version, and all applications must link against the new version explicitly. To support this, the linker (usually) puts a reference to "libfoo.so.x" in the binary so that's the library that the runtime linker looks for, and the package will install a symlink "libfoo.so.x" which points to the currently-installed/newest "libfoo.so.x.y" shared library. In order for new applications to be compiled, the development package installs a symlink "libfoo.so" which points to the currently-installed/newest "libfoo.so.x", or major version. The compile-time linker, when it sees "-lfoo" on the link line, will search for "libfoo.so" and link that, putting (as above) "libfoo.so.x" into the binary for the runtime linker to find. Some incorrectly-built applications force the compile-time linker to add "libfoo.so", only, to the binary: this is wrong because it doesn't follow the conventions above and the "libfoo.so" won't be available on systems which do not have developer packages installed (as above). Note that shared libraries can reference other shared libraries and typically follow the same rules as above. You should file a bug against the Bluecove library: it's not being created properly. -- Ubuntu-devel-discuss mailing list [email protected] Modify settings or unsubscribe at: https://lists.ubuntu.com/mailman/listinfo/ubuntu-devel-discuss
