J'ai trouvé par coïncidence que sur mon Debian Jessie il n'y a pas de variable LD_LIBRARY_PATH
(pour être précis, printenv | grep LD
ne montre rien lié à linker et echo "$LD_LIBRARY_PATH"
montre rien).
C'est le cas dans l'émulateur de terminal x ( qui pourrait l'effacer en raison de setgid ) ainsi que dans le terminal de base ( Ctrl + Alt + F1 ).
Je sais que LD_LIBRARY_PATH
peut être considéré comme mauvais, donc Debian peut le bloquer d'une manière ou d'une autre, mais d'autre part il y a quelques files dans /etc/ld.so.conf.d/
qui contiennent des directorys à append à LD_LIBRARY_PATH
. Aucun de mes files rc (que je connais) gâcher avec LD_LIBRARY_PATH
non plus.
Pourquoi je ne vois pas de variable LD_LIBRARY_PATH
?
Oui, il est normal que vous n'ayez pas de LD_LIBRARY_PATH
explicite. Lisez aussi ldconfig (8) et ld-linux (8) et à propos du rpath . Notez que ldconfig
met à jour /etc/ld.so.cache
, pas LD_LIBRARY_PATH
. Parfois, vous définissez le rpath d'un exécutable explicitement avec -Wl,-rpath,
directory passé à gcc
au moment de la binding.
Si vous avez besoin d'un LD_LIBRARY_PATH
(mais vous ne devriez probablement pas le faire), configurez-le vous-même (par exemple dans ~/.bashrc
).
Si vous avez besoin de parameters à l'échelle du système, vous pouvez par exemple envisager d'append /usr/local/lib/
dans /etc/ld.so.conf
et exécuter ldconfig
après l'installation de chaque bibliothèque.
AFAIK $LD_LIBRARY_PATH
est utilisé uniquement par l'éditeur de liens dynamic ld-linux.so
(et par dlopen (3) qui l'utilise) après execve (2) . Voir aussi ldd (1) .
Lisez la section Comment écrire des bibliothèques partagées de Drepper pour en savoir plus.