Autor: Francois-Xavier 'FiX' KOWALSKI Datum: To: guilde Betreff: Re: library
Gedeon Legaut wrote: >> J'ai un package (itpp) qui semble-t'il est a la recherche de librairies
>> extern avec une extension .a, or blas vient avec .so.3 par example.
>>
>
> J'ai déjà vu (et fait !) compiler des progs où la librairie dynamique
> .so avait simplement été renommée (plutôt symboliquement liée) en .a !
> Mais cela reste du loto, d'après ce que je me rappelle.
>
Le petit nom de la loterie dans ce cas se nomme "SONAME" (Shared-Object
Name). Il s'agit d'un nom qui est code en clair par le linker a la
generation de la librarie. Par convention, le SONAME d'une librairie qui
se nomme libtoto.so est "libtoto.so", pour une librarie qui a une
version binaire fixee comme libtoto.1.2.3, le SONAME sera libtoto.so.1
(On ne conserve que le majeur).
Dans les versions anciennes de Linux, Le lieur dynamique (ld.so) ne
tiens jamais compte du nom du fichier librarie. Il ouvre
inconditionellement tout ce qui se trouve dans les differents
repertoires listes dans le LD_LIBRARY_PATH et ne considere que les
SONAMEs des objets trouves
Les versions plus recentes de ld.so ont un cache des SONAMEs
(ld.so.cache binaire). Ce cahe accelere enormement la vitesse de
demarrage des programmes utilisant des librarires partagee sur Linux,
mais est une cause commune de maux de tetes pour les malheureux qui en
ignorent l'existence: le lieur dynamique ne cherche les librairies dont
depend un programme _que_ dans le ld.so.cache (+ dans LD_LIBRARY_PATH)
et _que_ en fonctione du SONAME...
...jusqu'a ce que root tourne "/sbin/ldconfig" qui met a jour le cahce
en referencant par leur SONAME toutes les librarires presentes dans les
repertoires listes dans /etc/ld.so.conf * /etc/ld.so.conf.d/*.
Desole pour la dissert... je n'ai pas d'URL sous la main & j'ai eu du
mal a faire plus court ;-)