To nie jest duplikat, ponieważ dotyczy osobliwości, którą zauważyłem, gdy używam /etc/ld.so.conf.
Aby uzyskać ścieżki, w których dynamiczny linker szuka bibliotek, uruchamiam polecenie ldconfig -v | grep -v "^"$'\t' | sed "s/:$//g". Kiedy /etc/ld.so.confnie ma na nim żadnych ścieżek. Dane wyjściowe z poprzedniego polecenia to
/lib
/usr/lib
Uznałem, że /libnajpierw szuka, a potem /usr/lib. Gdy dodam nową ścieżkę, taką jak /usr/local/lib, do, /etc/ld.so.confa następnie przerób /etc/ld.so.cache, dane wyjściowe ldconfig -v | grep -v "^"$'\t' | sed "s/:$//g"stają się
/usr/local/lib
/lib
/usr/lib
Uważam to za dziwne, ponieważ jeśli mam rację, że kolejność przeszukiwania wymienionych katalogów jest od góry do dołu, wówczas dodatkowe katalogi są przeszukiwane przed /libi /usr/lib. To, że dodatkowe katalogi są przeszukiwane, zanim zaufane katalogi same w sobie nie jest dziwne, ale kiedy /libjest przeszukiwane wcześniej /usr/lib, jest to dziwne, ponieważ /bin& /sbinsą wyszukiwane po /usr/bin& /usr/sbinin PATH.
Nawet jeśli ścieżki wymienione przez ldconfig -v | grep -Ev "^"$'\t' | sed "s/:$//g"byłyby przeszukiwane od dołu do góry, nadal byłoby to skośne porządkowanie, ponieważ dodatkowe katalogi byłyby przeszukiwane po zaufanych, podczas gdy /libbyłyby przeszukiwane /usr/lib.
Więc w jakiej kolejności ld.sowyszukiwane są ścieżki bibliotek? Dlaczego jest /libprzeszukiwany wcześniej /usr/lib? Jeśli tak nie jest, to dlaczego wyszukiwane są dodatkowe katalogi /lib?