Це не дублікат, оскільки це стосується особливості, яку я помітив, коли використовую /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/sbinin PATH.
Навіть якщо шляхи, перелічені ними ldconfig -v | grep -Ev "^"$'\t' | sed "s/:$//g", шукали знизу до верху, це все одно було б перекошеним замовленням, оскільки додаткові каталоги шукатимуть довірених, а /libшукатимуть /usr/lib.
Отже, який порядок ld.soпошуку шляхів до бібліотек? Чому /libшукають раніше /usr/lib? Якщо ні, то чому шукаються додаткові каталоги /lib?