comment un programme sait-il où se trouvent ses bibliothèques partagées, sans LD_LIBRARY_PATH

2

J'ai un programme foobarqui utilise des bibliothèques partagées. Je configure LD_LIBRARY_PATHcorrectement et puis quand je cours

>ldd foobar

Je peux voir qu'il connaît des chemins complets vers toutes les bibliothèques dont il a besoin.

Cependant, je ne ai pas besoin sur certains systèmes (ceux « plus gros ») LD_LIBRARY_PATHpour lddsavoir où les bibliothèques sont, et sur certains ( « petits » les) que je fais.

Sur les deux systèmes, l'exécutable foobarest le même, le chemin d'accès est le même et toutes les bibliothèques et les chemins d'accès sont les mêmes.

Donc, cela signifie que le rpathconstruit dans l'exécutable est le même dans les deux cas.

Donc, il doit y avoir un autre moyen de déterminer où sont les bibliothèques? Qu'Est-ce que c'est?

utilisateur322908
la source

Réponses:

0

Les fichiers / lib et / usr / lib sont ajoutés automatiquement. D'autres bibliothèques sont ajoutées à partir du fichier /etc/ld.so.conf.

Cmevoli
la source
0

ldconfigest un utilitaire qui maintient un cache de bibliothèques partagées. Une fois correctement configurés, les chemins d'accès corrects à la bibliothèque seront mis en cache et mis à la disposition des dirigeants. Vous pouvez utiliser ldconfig -ppour imprimer les candidats à la bibliothèque actuellement disponibles.

Voir la page de manuel pour ldconfig(8).


la source