Це не дублікат, оскільки це стосується особливості, яку я помітив, коли використовую /etc/ld.so.conf
.
Щоб отримати шляхи, за якими динамічний лінк шукає бібліотеки, я запускаю команду ldconfig -v | grep -v "^"$'\t' | sed "s/:$//g"
. Коли в /etc/ld.so.conf
ньому не вказано шляхів. Вихід з попередньої команди є
/lib
/usr/lib
Я подумав, що він шукає /lib
спочатку, а потім /usr/lib
. Коли я додаю новий шлях, наприклад /usr/local/lib
, до, /etc/ld.so.conf
а потім переробляю /etc/ld.so.cache
, вихід з ldconfig -v | grep -v "^"$'\t' | sed "s/:$//g"
стає
/usr/local/lib
/lib
/usr/lib
Мені це дивно, тому що якщо я маю рацію, що порядок пошуку в перерахованих каталогах знаходиться зверху вниз, то додаткові каталоги шукаються перед /lib
і /usr/lib
. Те, що додаткові каталоги шукаються перед довіреними каталогами, не є дивним самостійно, але коли /lib
проводиться пошук раніше /usr/lib
, це дивно, тому що /bin
& /sbin
шукаються після /usr/bin
& /usr/sbin
in PATH
.
Навіть якщо шляхи, перелічені ними ldconfig -v | grep -Ev "^"$'\t' | sed "s/:$//g"
, шукали знизу до верху, це все одно було б перекошеним замовленням, оскільки додаткові каталоги шукатимуть довірених, а /lib
шукатимуть /usr/lib
.
Отже, який порядок ld.so
пошуку шляхів до бібліотек? Чому /lib
шукають раніше /usr/lib
? Якщо ні, то чому шукаються додаткові каталоги /lib
?