ldconfig
ma dwie interesujące opcje:
-f conf
Use conf instead of /etc/ld.so.conf.
-C cache
Use cache instead of /etc/ld.so.cache.
Próbowałem skopiować /etc/ld.so.conf
do własnego katalogu domowego i edytowałem go tak, aby zawierał ścieżki do lokalnych bibliotek, np. /home/syockit/local/usr/lib
Itp. I uruchomiłem
ldconfig -f /home/syockit/ld.so.conf -C /home/syockit/ld.so.cache
a następnie, aby potwierdzić, że biblioteki są buforowane, uruchomiłem
ldconfig -f /home/syockit/ld.so.conf -C /home/syockit/ld.so.cache -p | less
i obejmuje wszystkie moje biblioteki, w tym również biblioteki systemowe.
Teraz chcę, aby domyślny linker używał tych dwóch. Ale w man ld.so
, nie widzę wzmianki o możliwości używania niestandardowego .conf
lub .cache
. Jaki jest więc sens powyższych dwóch opcji ldconfig
?
źródło
/etc/ld.so.conf
jest odczytywany tylko przezldconfig
(program do generowania pamięci podręcznej), a nie przezld.so
(moduł ładujący dynamiczny). Możesz zmienić lokalizację pliku konfiguracyjnego, jeśli chcesz wygenerować pamięć podręczną inną niż domyślna pamięć systemu./etc/ld.so.cache
jest czytany przezld.so
i nie można go odczytać z innej lokalizacji. Niemniej jednak przydatne może być przekazanie innej lokalizacji wyjściowejldconfig
. Najczęstszym przypadkiem użycia są prawdopodobnie środowiska chroot . Możesz użyćldconfig -r /some/root
do uruchomienialdconfig
na alternatywnym katalogu głównym i umieścić dane wyjściowe w dowolnym miejscu (wewnątrz lub na zewnątrz tego katalogu głównego). Będziesz musiał wyemitować dane wyjściowe w/some/root/etc/ld.so.cache
lub skopiować je później. Istnieją inne dość niejasne przypadki użycia, na przykład jeśli chcesz uruchomićldconfig
jako nieuprzywilejowany użytkownik (który nie może pisać/etc/ld.so.cache
), a następnie przenieść plik na swoje miejsce później.źródło