Это не дубликат, потому что имеет дело с особенностью, которую я заметил, когда использую /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
?