Puis-je utiliser mon propre ld.so.cache?

14

ldconfig a deux options intéressantes:

-f conf
      Use conf instead of /etc/ld.so.conf.
-C cache
      Use cache instead of /etc/ld.so.cache.

J'ai essayé de copier /etc/ld.so.confdans mon propre répertoire personnel et l'ai modifié pour inclure des chemins vers mes bibliothèques locales, par exemple, /home/syockit/local/usr/libetc.

ldconfig -f /home/syockit/ld.so.conf -C /home/syockit/ld.so.cache

et par la suite, pour confirmer que les bibliothèques sont mises en cache, j'ai couru

ldconfig -f /home/syockit/ld.so.conf -C /home/syockit/ld.so.cache -p | less

et il inclut toutes mes bibliothèques en plus des bibliothèques système.

Maintenant, je veux que l'éditeur de liens par défaut utilise ces deux. Mais dans man ld.so, je ne vois aucune mention de pouvoir utiliser custom .confou .cache. Alors, quel est l'intérêt des deux options ci-dessus ldconfig?

syockit
la source

Réponses:

9

Je pense que la réponse à votre question est non, bien que vous puissiez accomplir la même chose d'autres façons.

dans man ld.so, je ne vois aucune mention de pouvoir utiliser .conf ou .cache personnalisé

Certes, mais il est fait mention de $LD_LIBRARY_PATHet et --library-path, le premier étant plus généralement utile.

quel est l'intérêt des deux options ci-dessus ldconfigalors?

Vous pouvez donc créer un cache sans écraser celui du système et sans avoir à utiliser les confs du système.

boucle d'or
la source
... juste pour le plaisir? Ou est-ce pour la criminalistique du système?
syockit le
1
Cela pourrait être pour une image système ou un environnement chroot, etc.
goldilocks
5

/etc/ld.so.confn'est lu que par ldconfig(le programme de génération de cache), pas par ld.so(le chargeur dynamique). Vous pouvez modifier l'emplacement du fichier de configuration si vous souhaitez générer un cache différent de celui par défaut du système.

/etc/ld.so.cacheest lu par ld.soet vous ne pouvez pas le lire à partir d'un autre emplacement. Il peut néanmoins être utile de passer un emplacement de sortie différent à ldconfig. Le cas d'utilisation le plus courant est probablement les environnements chroot . Vous pouvez utiliser ldconfig -r /some/rootpour exécuter ldconfigsur une autre racine et placer la sortie où vous le souhaitez (à l'intérieur ou à l'extérieur de cette racine). Vous devrez soit émettre la sortie sur, /some/root/etc/ld.so.cachesoit la copier plus tard. Il existe d'autres cas d'utilisation assez obscurs, par exemple si vous souhaitez exécuter en ldconfigtant qu'utilisateur non privilégié (qui ne peut pas écrire /etc/ld.so.cache), puis déplacer le fichier en place ultérieurement.

Gilles 'SO- arrête d'être méchant'
la source