Questo non è un duplicato perché si tratta di una peculiarità che ho notato quando uso /etc/ld.so.conf
.
Per ottenere i percorsi in cui il linker dinamico cerca le librerie, eseguo il comando ldconfig -v | grep -v "^"$'\t' | sed "s/:$//g"
. Quando /etc/ld.so.conf
non contiene percorsi elencati. L'output del comando precedente è
/lib
/usr/lib
Ho pensato che /lib
prima cercasse e poi /usr/lib
. Quando aggiungo un nuovo percorso, ad esempio /usr/local/lib
, /etc/ld.so.conf
ae poi rifaccio /etc/ld.so.cache
, l'output da ldconfig -v | grep -v "^"$'\t' | sed "s/:$//g"
diventa
/usr/local/lib
/lib
/usr/lib
Lo trovo strano perché se ho ragione che l'ordine in cui le directory elencate sono ricercate è dall'alto verso il basso, allora vengono cercate altre directory prima /lib
e /usr/lib
. Che le directory aggiuntive vengano ricercate prima delle directory attendibili non è strano da solo, ma quando /lib
viene cercato prima /usr/lib
, è strano perché /bin
& /sbin
vengono cercate dopo /usr/bin
e /usr/sbin
in PATH
.
Anche se i percorsi elencati ldconfig -v | grep -Ev "^"$'\t' | sed "s/:$//g"
fossero cercati dal basso verso l'alto, sarebbe comunque un ordinamento distorto perché le directory aggiuntive verrebbero ricercate dopo quelle fidate mentre /lib
sarebbero state cercate dopo /usr/lib
.
Quindi, qual è l'ordine in cui ld.so
cercano i percorsi per le librerie? Perché viene /lib
cercato prima /usr/lib
? In caso contrario, perché vengono ricercate ulteriori directory /lib
?