[sane-devel] SANE shared library

Martin Collins martin at mkcollins.org
Fri May 19 14:05:59 UTC 2006


On Thu, 18 May 2006 23:03:11 -0700 (PDT)
Tamkang <power_station_2001 at yahoo.com> wrote:

> 1. why in /usr/lib/sane has 2 files (ie: libsane-sm3600.so.1 ,
> libsane-sm3600.so.1.0.17) as i know that libsane-sm3600.so.1 is
> symbolic link to libsane-sm3600.so.1.0.17, but why
> in /usr/local/lib/sane has 4 files (ie: libsane-sm3600.la ,
> libsane-sm3600.so , libsane-sm3600.so.1 ,
> libsane-sm3600.so.1.0.17) ?  why not only one file
> libsane-sm3600.so.1.0.17 files to let xsane to link to this
> driver ?  

The .so files are shared object libraries (DLLs).
The symbolic links are to eliminate "DLL Hell". Programs should link
to the .so which is linked to .so.1 etc. This means you can upgrade
to a newer library and your program will automatically use it without
having to be changed. It also allows different versions of a library
to coexist for the cases where different programs need specific
library versions.

> the questions is why the
> source not default to /usr/lib/sane directory?  Is there any
> different between /usr/local/lib/sane and /usr/lib/sane directory ? 

Packages provided by the distro get installed in /usr as they are
considered a part of the system. Programs you build yourself default
to /usr/local as they are not part of the system and if they were
installed in /usr it might mess up the package system.
With SANE you should remove your distro's package before installing
from source as the versions can interfere with each other.
Alternatively, if you are confident it won't break anything, you can
specify --prefix=/usr to configure and SANE will be installed in /usr.

Martin



More information about the sane-devel mailing list