Czy mogę używać własnej pamięci podręcznej ld.so.?

14

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.confdo własnego katalogu domowego i edytowałem go tak, aby zawierał ścieżki do lokalnych bibliotek, np. /home/syockit/local/usr/libItp. 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 .conflub .cache. Jaki jest więc sens powyższych dwóch opcji ldconfig?

syockit
źródło

Odpowiedzi:

9

Myślę, że odpowiedź na twoje pytanie brzmi „nie”, chociaż możesz osiągnąć to samo na inne sposoby.

w man ld.so nie widzę wzmianki o możliwości używania niestandardowego .conf lub .cache

To prawda, ale wspomina się o nich, $LD_LIBRARY_PATHa --library-pathte pierwsze są bardziej przydatne.

jaki jest sens powyższych dwóch opcji ldconfig?

Możesz więc utworzyć pamięć podręczną bez nadpisywania pamięci systemowej i bez konieczności korzystania z confs systemu.

Złotowłosa
źródło
... na litość boską? A może jest to dla sądowej wiedzy systemowej?
syockit
1
Może to być obraz systemu lub środowisko chroot itp.
goldilocks
5

/etc/ld.so.confjest odczytywany tylko przez ldconfig(program do generowania pamięci podręcznej), a nie przez ld.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.cachejest czytany przez ld.soi nie można go odczytać z innej lokalizacji. Niemniej jednak przydatne może być przekazanie innej lokalizacji wyjściowej ldconfig. Najczęstszym przypadkiem użycia są prawdopodobnie środowiska chroot . Możesz użyć ldconfig -r /some/rootdo uruchomienia ldconfigna 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.cachelub skopiować je później. Istnieją inne dość niejasne przypadki użycia, na przykład jeśli chcesz uruchomić ldconfigjako nieuprzywilejowany użytkownik (który nie może pisać /etc/ld.so.cache), a następnie przenieść plik na swoje miejsce później.

Gilles „SO- przestań być zły”
źródło