Je suis un noob sur la façon dont les bibliothèques partagées fonctionnent sur linux. J'essaie de comprendre comment les applications résolvent les différentes révisions de la même bibliothèque partagée au moment de l'exécution sur linux.
D'après ce que je comprends, une bibliothèque partagée a trois "noms", par exemple,
- libmy.so.1.2 (nom réel, c'est-à-dire le fichier obj actuel)
- libmy.so.1 (SONAME, qui est incorporé dans le fichier obj actuel)
- libmy.so (nom de l'éditeur de liens, fourni à l'éditeur de liens au moment de la liaison et intégré à l'exécutable)
Lorsque vous installez la bibliothèque via LDCONFIG, celle-ci crée les liens symboliques suivants
- (2) => (1)
- (3) => (2)
Maintenant, disons que je compile une autre version de la même bibliothèque avec le nom réel suivant, libmy.so.2.0. Le SONAME par principe serait libmy.so.2.0.
Au moment de la liaison de l'application, quel est le nom de l'éditeur de liens que je dois fournir avec l'option "-l". En suivant les directives que j'ai lues ( http://www.dwheeler.com/program-library/Program-Library-HOWTO/x36.htm l), ne devrait-il pas s'agir de libmy.so et, dans ce cas, comment distinguer les deux versions du fichier obj ?